RedisTemplate获取原生Jedis

需求场景

项目中一般用RedisTemplate操作redis,但是某些需求场景只有原生jedis才会满足,比如jedis.hset,它的作用是:如果如果key不存在,则新增key并返回1;如果key存在,但filed不存在,则新增filed并返回1。 而RedisTemplate未提供这样的api。

获取方式

我们可以通过RedisTemplate获取原生Jedis,来满足我们的需求。

RedisConnection conn= null;
    try {
          
   
        conn =  RedisConnectionUtils.getConnection(redisTemplate.getConnectionFactory());
        Jedis jedis = (Jedis) conn.getNativeConnection();
        ......
        ......
        //如果key不存在,则新增key并返回1
        //如果key存在,但filed不存在,则新增filed并返回1
        Long res = jedis.hset(key, monitorData.getEndpoint(), monitorData.getTimestamp() + "");
        ......
        ......
    }finally {
          
   
        if(conn != null){
          
   
            RedisConnectionUtils.releaseConnection(conn, jedisConnectionFactory);
        }
    }

需要注意的是,在获取到RedisConnection之后,一定要在finally中释放连接,否则会造成连接泄露。

经验分享 程序员 微信小程序 职场和发展