MrJazsohanisharma

Jedis Client in Spring Boot

Using Jedis: Integrate the Jedis Client for Synchronous Operations with Redis in Spring Boot

If you’re building high-performance applications in Java, Redis is likely on your radar. It’s a blazing fast in-memory key-value store, perfect for caching, session management, and pub-sub systems. While Spring Boot offers built-in support via Spring Data Redis, you might prefer Jedis — a simple, lightweight Redis client — for synchronous operations.

In this tutorial, you'll learn how to integrate Jedis with Spring Boot, configure it properly, and build a simple REST API to interact with Redis.

易 What Is Jedis?

Jedis is a Java client library for Redis that offers a synchronous, blocking API. It is ideal when you want direct control over Redis operations without the overhead of reactive programming or extra abstractions.

⚒ Prerequisites

  • Java 17+
  • Spring Boot 3.x
  • Redis installed locally or via Docker
  • Maven or Gradle

️ Step 1: Add Jedis to Your Project

Maven

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>5.1.0</version>
</dependency>

Gradle

implementation 'redis.clients:jedis:5.1.0'

⚙️ Step 2: Configure Jedis in Spring Boot

@Configuration
public class JedisConfig {

    @Value("${spring.redis.host}")
    private String redisHost;

    @Value("${spring.redis.port}")
    private int redisPort;

    @Bean
    public Jedis jedis() {
        return new Jedis(redisHost, redisPort);
    }
}

spring.redis.host=localhost
spring.redis.port=6379

 Step 3: Create a Redis Service Layer

@Service
public class RedisService {

    private final Jedis jedis;

    public RedisService(Jedis jedis) {
        this.jedis = jedis;
    }

    public void save(String key, String value) {
        jedis.set(key, value);
    }

    public String get(String key) {
        return jedis.get(key);
    }

    public void delete(String key) {
        jedis.del(key);
    }
}

 Step 4: Build a REST Controller

@RestController
@RequestMapping("/api/redis")
public class RedisController {

    private final RedisService redisService;

    public RedisController(RedisService redisService) {
        this.redisService = redisService;
    }

    @PostMapping
    public ResponseEntity&lt;String&gt; saveData(@RequestParam String key, @RequestParam String value) {
        redisService.save(key, value);
        return ResponseEntity.ok("Saved successfully");
    }

    @GetMapping
    public ResponseEntity&lt;String&gt; getData(@RequestParam String key) {
        String value = redisService.get(key);
        return value != null ? ResponseEntity.ok(value) : ResponseEntity.notFound().build();
    }

    @DeleteMapping
    public ResponseEntity&lt;String&gt; deleteData(@RequestParam String key) {
        redisService.delete(key);
        return ResponseEntity.ok("Deleted successfully");
    }
}

離 Testing It Out

With your Spring Boot application running, try these endpoints using curl or Postman:

  • POST /api/redis?key=test&value=hello
  • GET /api/redis?key=test
  • DELETE /api/redis?key=test

 Why Choose Jedis?

  • ✅ Simple, blocking API
  • ✅ Lightweight and fast
  • ✅ No reactive complexity
  • ✅ Perfect for quick caching and session scenarios

⚠️ Considerations

Jedis is not thread-safe by default when using a single instance. If you plan to scale this in a multi-threaded environment, consider using JedisPool, or explore Lettuce or Redisson for more advanced use cases.

 Conclusion

Integrating Jedis with Spring Boot is straightforward and gives you full control over Redis commands in a synchronous manner. Whether you're building a caching layer or a simple session store, Jedis provides the performance and simplicity many applications need.

Start small, keep it fast, and scale as you go!

 Resources

 Keywords for SEO

Spring Boot Redis, Jedis Spring Boot, Java Redis Integration, Jedis Redis Example, Synchronous Redis with Spring, Spring Boot Jedis Client, Redis Java Tutorial

Previous Post Next Post

Blog ads

ads