简介
在sping-data-redis中,还提供了RedisKeyValueTemplate类,用来处理Model对象的set/get等处理。
查看实现
package org.springframework.data.redis.core;
/**
* Redis specific implementation of {@link KeyValueTemplate}.
*
* @author Christoph Strobl
* @since 1.7
*/
public class RedisKeyValueTemplate extends KeyValueTemplate {
......
}
/**
* Basic implementation of {@link KeyValueOperations}.
*
* @author Christoph Strobl
* @author Oliver Gierke
* @author Thomas Darimont
*/
public class KeyValueTemplate implements KeyValueOperations, ApplicationEventPublisherAware {
......
}
在RedisKeyValueTemplate类中,缺省使用Jackson2JsonRedisSerializer作为序列号的处理类。
检查一下运行时的RedisKeyValueTemplate实例对象:
可以看到其中redisOps对象为StringRedisTemple,而其valueSerializer对象为Jackson2JsonRedisSerializer。
使用
使用起来一贯的简单。
处理redis的服务器配置,无需其他的Serializer配置,直接使用
@Autowired
private RedisKeyValueTemplate redisKeyValueTemplate;
@RequestMapping("/kvuser/{id}")
@ResponseBody
public String getKVUser(@PathVariable("id") long id) {
log.info("---- getUser");
//
User user = new User(id, "kv-"+id+"@126.com", "kv-name-"+id, "pwd"+id, "address"+id, "phone"+id);
String strKey = "com.dcloud.kvuser";
User ret = redisKeyValueTemplate.findById(id, User.class);
if (null == ret) {
//
String strInfo = "try to set because not find "+strKey;
log.warn(strInfo);
//
redisKeyValueTemplate.insert(id, user);
return strInfo;
} else {
log.info("find by kvTemple");
log.info(user.toString());
return user.toString();
}
}
检查
访问2次后,在redis中可以看到对应的数据。
keys:
index:
model data:
缺少expire
因为使用RedisKeyValueTemplate时,spring 还会生成类似index的数据。所有这里没有expire的设置操作。
更多
查看javadoc,可以看到更丰富的功能和api。