codecamp
集成Redis(Jedis库)

简介

详细说明请查阅插件的README

nutz-integration-jedis Git@OSC镜像

jedis是redis的java客户端,请注意区别.

本插件在当前版本(1.r.60.r4), 已完成单机和集群操作的集成.

提供多种使用方式

  • aop -- 自动管理Jedis实例的开启和关闭,推荐使用
  • 注入JedisPool -- JedisPool就是连接池本身,使用try-with-resources或try-finally方式使用
  • 注入RedisService -- 封装Jedis的大部分方法,同时自动管理Jedis实例的开启和关闭. 建议直接注入,而不是继承它.

依赖

  • jedis 2.8+
  • 依赖名为conf类型为PropertiesProxy的ioc bean,配置信息从它读取

基本配置

本插件通过@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

通过aop方式使用

必须是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()));
}

通过注入JedisPool使用

JedisPool是一个连接池实现,通过getResource取出Jedis实例进行操作, 操作完成后,需要调用其close方法关闭.

@Inject JedisPool jedisPool;

// JDK 7+ , 可利用try-with-resources特性, 让JDK自动回收(会自定义调用close方法)
public void setxxx(xxx yyy) {
    try (Jedis jedis = jedisPool.getResource()) {
        jedis.set("wendal", "https://nutz.cn");
    }
}
// JDK 6, 按部就班的老办法try-finally
public void setxxx(xxx yyy) {
    Jedis jedis = null;
    try { 
        jedis = jedisPool.getResource();
        jedis.set("wendal", "https://nutz.cn");
    } finally {
        Streams.safeClose(jedis);
    }
}

注入RedisService使用

RedisService继承了Jedis类的大部分方法, 所有方法均自动开启和关闭Jedis实例,除pipeline外的大部分方法均可正常使用.

若涉及到pipeline, 可注入JedisPool取出原生Jedis进行操作.

@Inject RedisService redisService;

public void setxxx(xxx yyy) {
    redisService.set("wendal", "https://nutz.cn");
    
}
图像处理小军刀
MongoDB的薄封装(nutzmongo库)
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

表达式引擎

maplist结构

图像处理小军刀

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }