从RedisTemplate中获得Jedis实例

RedisTemplate中获得Jedis实例,可以使用如下方式:

1. 直接从RedisTemplate获取RedisConnectionFactory

RedisConnectionFactory factory = redisTemplate.getConnectionFactory();

2. 从RedisConnectionFactory获取JedisConnection对象

RedisConnection connection = factory.getConnection();

3. 将JedisConnection对象转换为Jedis实例

Jedis jedis = ((JedisConnection) connection).getJedis();

所以整体代码如下:

@Autowired
private RedisTemplate<String, String> redisTemplate;

public void getJedis() {
    RedisConnectionFactory factory = redisTemplate.getConnectionFactory();
    RedisConnection connection = factory.getConnection();
    Jedis jedis = ((JedisConnection) connection).getJedis();
    // 使用jedis操作Redis
} 

此方式实际上是从RedisTemplate底层的RedisConnectionFactory中获取Redis连接,

然后强制类型转换为JedisConnection, 获取该连接关联的Jedis实例。

需要注意的是,使用此方法获得的Jedis实例是RedisTemplate维护的短连接,使用完后必须关闭,否则会导致RedisTemplate短连接泄露,最终抛出“Failed to borrow a connection from the pool”异常。

所以使用完Jedis实例后,必须调用如下方法关闭连接:

jedis.close();  
connection.close(); 

常见的使用场景是,当RedisTemplate不支持的某些Redis命令时,需要获取Jedis实例来直接执行。

但不推荐整体架构使用Jedis, 而是继续使用RedisTemplate进行操作,它是Spring推荐的操作Redis的模板工具类。

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发

请登录后发表评论