使用redis的过程中,有两个比较头疼的事情,一个就是连接资源管理(获取和释放),另一个就是过期时间管理。
这两点如果没有很好的统一处理就很容易出现资源泄露(连接未释放),过期时间遗漏或篡改导致逻辑异常。
基于以上两点做一个封装工具xredis,经过多个商业项目考验。项目已开源,闪现地址https://github.com/xhigher/xredis。
工具类简单易用,支持横向扩展, 简化繁琐的过期时间管理,屏蔽节点关系,不用关心资源获取与释放;
使用流程:
第一步,配置application.properties
#启用开关
redis.status=1
#连接池配置
redis.pool.maxActive=1024
redis.pool.maxIdle=200
redis.pool.maxWait=1000
redis.pool.testOnBorrow=true
redis.pool.testOnReturn=true
#节点数量
redis.node.size=2
//节点【用户】连接信息
redis.node1.name=user
redis.node1.host=127.0.0.1
redis.node1.port=6389
redis.node1.pass=iQ6dSxzGfg
redis.node1.db=1
//节点【商品】连接信息
redis.node2.name=product
redis.node2.host=127.0.0.1
redis.node2.port=6389
redis.node2.pass=iQ6dSxzGfg
redis.node2.db=2
可指定db,也可以不指定,默认db=0;
第二步,初始化(全局操作一次即可)
Properties properties = new Properties();
InputStream is = Object.class.getResourceAsStream(configFile);
properties.load(is);
if (is != null) {
is.close();
}
XRedis.init(properties);
第三步,业务配置,指定key所属节点,过期时间
String NODE_USER = "user"; //节点-用户
String NODE_PRODUCT = "product";//节点-商品
//用户信息,永久
RedisKeyBuilder USER_INFO = new RedisKeyBuilder(NODE_USER, "user_info", 0);
//用户登录会话信息,30天
RedisKeyBuilder USER_SESSION = new RedisKeyBuilder(NODE_PRODUCT, "user_session", EXPIRE_DAY_30);
//商品信息,3天
RedisKeyBuilder PRODUCT_INFO = new RedisKeyBuilder(NODE_PRODUCT, "product_info", EXPIRE_DAY_3);
//商品分页信息,1天
RedisKeyBuilder PRODUCT_PAGE_DATA = new RedisKeyBuil