redis连接方式推荐使用
2018-12-21 00:18:00
954次阅读
0个评论
以下代码
来执行,
或者使用完connection后 ,用
来释放connection.
同时,redis中也不建议使用keys命令,redis pool的配置应该合理配上,否则出现问题无错误日志,无报错,定位相当困难。
.......
Cursor c = stringRedisTemplate.getConnectionFactory().getConnection().scan(options);
while (c.hasNext()) {
.....,,
}
分析这个代码,stringRedisTemplate.getConnectionFactory().getConnection()获取pool中的redisConnection后,并没有后续操作,也就是说此时redis 连接池中的链接被租赁后并没有释放或者退还到链接池中,虽然业务已处理完毕 redisConnection 已经空闲,但是pool中的redisConnection的状态还没有回到idle状态
正常应为
自此问题已经找到。
总结:spring stringRedisTemplate 对redis常规操作做了一些封装,但还不支持像 Scan SetNx等命令,这时需要拿到jedis Connection进行一些特殊的Commands
使用 stringRedisTemplate.getConnectionFactory().getConnection() 是不被推荐的
我们可以使用
stringRedisTemplate.execute(new RedisCallback<Cursor>() {
@Override
public Cursor doInRedis(RedisConnection connection) throws DataAccessException {
return connection.scan(options);
}
});
来执行,
或者使用完connection后 ,用
RedisConnectionUtils.releaseConnection(conn, factory);
来释放connection.
同时,redis中也不建议使用keys命令,redis pool的配置应该合理配上,否则出现问题无错误日志,无报错,定位相当困难。
00
相关话题
- 使用Redis bitmap统计活跃用户
- 最新商城系统推荐
- vue使用provide/inject方式解决刷新当前页面问题
- redis使用setbit统计用户连续登录天数
- websocket自动断开连接
- spring集成Redis各种模式 单Redis,Sentinel 哨兵模式,Redis Cluster集群,Redis Sharding集群
- Java两种文件复制方式
- Druid连接池实现用户密码加密
- Java反射允许修改final属性值的方式
- mysql-connector-java-8.0.11连接MySQL 8.0问题
- Redis的bitMap命令
- Nginx的upstream支持的5种分配方式
- Redis 冒号分隔符
- Redis BitMap 统计用户活跃指标
- Redis实现分布式限流