详细说明请查阅插件的README
nutz-integration-jedisGit@OSC镜像
jedis是redis的java客户端,请注意区别.
本插件在当前版本(1.r.60.r4), 已完成单机和集群操作的集成.
提供多种使用方式
本插件通过@IocBy加载
@IocBy(args = {
"*js","ioc/",
"*anno", "net.wendal.nutzbook",
"*jedis" // 加载jedis
})
在conf的扫描路径内,添加一个redis.properties. 以下均为默认值,不写也行.
redis.host=localhost redis.port=6379 redis.timeout=2000 #redis.password=wendal.net redis.database=0 #redis.mode=cluster
必须是ioc bean对象哦,不然@Aop不会生效
import static org.nutz.integration.jedis.RedisInterceptor.jedis;
@Aop("redis") //拦截器的名字叫redis
public void addTopic(Topic topic) {
// 通过调用jedis()获取上下文的Jedis对象,无需手动关闭或回收.
jedis().set("topic:"+R.UU32(), Json.toJson(topic,JsonFormat.full()));
}
JedisAgent封装了JedisPool和JedisCluster,通过getResource取出Jedis实例进行操作, 操作完成后,需要调用其close方法关闭.
@Inject JedisAgent jedisAgent; //@Inject JedisCluster jedisCluster; //@Inject JedisPool jedisPool; // JDK 7+ , 可利用try-with-resources特性, 让JDK自动回收(会自定义调用close方法) public void setxxx(xxx yyy) { try (Jedis jedis = jedisAgent.getResource()) { jedis.set("wendal", "https://nutz.cn"); } } // JDK 6, 按部就班的老办法try-finally public void setxxx(xxx yyy) { Jedis jedis = null; try { jedis = jedisAgent.getResource(); jedis.set("wendal", "https://nutz.cn"); } finally { Streams.safeClose(jedis); } }
也可以注入JedisPool(单机版jedis)或JedisCluster(集群版redis). 推荐使用JedisAgent.
RedisService继承了Jedis类的大部分方法, 所有方法均自动开启和关闭Jedis实例,除pipeline外的大部分方法均可正常使用.
若涉及到pipeline, 可注入JedisPool取出原生Jedis进行操作.
@Inject RedisService redisService;
public void setxxx(xxx yyy) {
redisService.set("wendal", "https://nutz.cn");
}