redis - 如何安全处置Spring RedisTemplate?

标签 redis jedis spring-data-redis

我必须根据需要为每个请求(写入/读取)创建 RedisTemplate。 连接工厂是JedisConnectionFactory

JedisConnectionFactory factory=new 
    JedisConnectionFactory(RedisSentinelConfiguration,JedisPoolConfig);

有一次,我用RedisTemplate.opsForHash/opsForValue做操作,如何安全地处理模板,让连接返回到JedisPool。

截至目前,我使用

template.getConnectionFactory().getConnection().close();

这是正确的方法吗?

最佳答案

RedisTemplateRedisConnectionFactory 获取连接并断言它返回到池中,或者在命令执行后正确关闭,具体取决于提供的配置。 (参见:JedisConnection#close())

通过 getConnectionFactory().getConnection().close(); 手动关闭连接将获取一个新连接并立即关闭它。

所以如果你想有更多的控制权,你可以获取连接,执行一些操作并稍后关闭它

RedisConnection connection = template.getConnectionFactory().getConnection();
connection... // call ops as required
connection.close();

或将 RedisTemplate.execute(...)RedisCallback 一起使用,这样您就不必担心获取和返回连接。

template.execute(new RedisCallback<Void>() {

  @Override
  public Void doInRedis(RedisConnection connection) throws DataAccessException {
    connection... // call ops as required
    return null;
  }});

关于redis - 如何安全处置Spring RedisTemplate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28807555/

相关文章:

python - 为什么要使用 Flask 的 Redis 扩展?

java - Redis/java - 写入和读取二进制数据

spring - 过期key触发事件-Spring data Redis

java - 无法在 Spring Boot 中使用 Crud Repository 从 Redis 获取结果?

flask - 如何让 flask 将生成器传递给 celery 等任务

redis - 如何使用jedis客户端在java中监听redis集群的键空间通知?

mongodb - 没有SQL。服务器崩溃时丢失了多少数据?

redis - 与按范围排序的 redis 相交的单个命令

java - 如何使用 Jedis 库将这些数据保存到 Redis 中?

redis - 连接 Spring Session 和 Redis 时无法创建 springSessionRepositoryFilter