I’ve just started taking a look at using Redis. I wondered what it would look like to build a simple REST interface with Spring Boot. Spring Data Redis makes this pretty simple.
First up, you need to configure a @Bean in your @SpringBootApplication class (full source is on github here):
@Bean
RedisTemplate<String, Object> redisTemplate() {
RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
template.setConnectionFactory(jedisConnectionFactory());
// these are required to ensure keys and values are correctly serialized
template.setKeySerializer(new StringRedisSerializer());
template.setHashValueSerializer(new GenericToStringSerializer<Object>(Object.class));
template.setValueSerializer(new GenericToStringSerializer<Object>(Object.class));
return template;
}
This is connecting with default settings to a locally running Redis.
Wire up a RedisTemplate into a Controller like this:
@RestController
public class RedisRestController {
@Autowired
private RedisTemplate<String, Object> template;
@GetMapping("singlekey/{key}")
public RedisResult getSingleValue(@PathVariable("key") String key){
String value = (String)this.template.opsForValue().get(key);
RedisResult result = new RedisResult(key, value);
return result;
}
}
and this is a bare minimum to get started, but shows how easy it is to get stuff up and running with Spring Boot and other projects like Spring Data.
Send a GET to /singlekey/ with a key value and json for the result is returned.