美文网首页
redis工具类

redis工具类

作者: 溅十三 | 来源:发表于2020-04-05 15:12 被阅读0次
    packagecom.imooc.utils;
    
    importorg.springframework.beans.factory.annotation.Autowired;
    
    importorg.springframework.dao.DataAccessException;
    
    importorg.springframework.data.redis.connection.RedisClusterConnection;
    
    importorg.springframework.data.redis.connection.RedisConnection;
    
    importorg.springframework.data.redis.connection.StringRedisConnection;
    
    importorg.springframework.data.redis.core.RedisCallback;
    
    importorg.springframework.data.redis.core.RedisOperations;
    
    importorg.springframework.data.redis.core.SessionCallback;
    
    importorg.springframework.data.redis.core.StringRedisTemplate;
    
    importorg.springframework.stereotype.Component;
    
    importjava.util.List;
    
    importjava.util.Map;
    
    importjava.util.Set;
    
    importjava.util.concurrent.TimeUnit;
    
    /**
    
    *@Title: Redis 工具类
    
    *@author慕课网
    
    */
    
    @Component
    
    publicclassRedisOperator{
    
    //  @Autowired
    
    //    private RedisTemplate<String, Object> redisTemplate;
    
    @Autowired
    
    privateStringRedisTemplate redisTemplate;
    
    // Key(键),简单的key-value操作
    
    /**
    
    * 实现命令:TTL key,以秒为单位,返回给定 key的剩余生存时间(TTL, time to live)。
    
    *
    
    *@paramkey
    
    *@return
    
    */
    
    publiclongttl(String key){
    
    returnredisTemplate.getExpire(key);
    
    }
    
    /**
    
    * 实现命令:expire 设置过期时间,单位秒
    
    *
    
    *@paramkey
    
    *@return
    
    */
    
    publicvoidexpire(String key,longtimeout){
    
    redisTemplate.expire(key, timeout, TimeUnit.SECONDS);
    
    }
    
    /**
    
    * 实现命令:INCR key,增加key一次
    
    *
    
    *@paramkey
    
    *@return
    
    */
    
    publiclongincr(String key,longdelta){
    
    returnredisTemplate.opsForValue().increment(key, delta);
    
    }
    
    /**
    
    * 实现命令:KEYS pattern,查找所有符合给定模式 pattern的 key
    
    */
    
    publicSetkeys(String pattern){
    
    returnredisTemplate.keys(pattern);
    
    }
    
    /**
    
    * 实现命令:DEL key,删除一个key
    
    *
    
    *@paramkey
    
    */
    
    publicvoiddel(String key){
    
    redisTemplate.delete(key);
    
    }
    
    // String(字符串)
    
    /**
    
    * 实现命令:SET key value,设置一个key-value(将字符串值 value关联到 key)
    
    *
    
    *@paramkey
    
    *@paramvalue
    
    */
    
    publicvoidset(String key, String value){
    
    redisTemplate.opsForValue().set(key, value);
    
    }
    
    /**
    
    * 实现命令:SET key value EX seconds,设置key-value和超时时间(秒)
    
    *
    
    *@paramkey
    
    *@paramvalue
    
    *@paramtimeout
    
    *            (以秒为单位)
    
    */
    
    publicvoidset(String key, String value,longtimeout){
    
    redisTemplate.opsForValue().set(key, value, timeout, TimeUnit.SECONDS);
    
    }
    
    /**
    
    * 实现命令:GET key,返回 key所关联的字符串值。
    
    *
    
    *@paramkey
    
    *@returnvalue
    
    */
    
    publicStringget(String key){
    
    return(String)redisTemplate.opsForValue().get(key);
    
    }
    
    /**
    
    * 批量查询,对应mget
    
    *@paramkeys
    
    *@return
    
    */
    
    publicListmget(List<String> keys){
    
    returnredisTemplate.opsForValue().multiGet(keys);
    
    }
    
    /**
    
    * 批量查询,管道pipeline
    
    *@paramkeys
    
    *@return
    
    */
    
    publicListbatchGet(List<String> keys){
    
    //  nginx -> keepalive
    
    //  redis -> pipeline
    
    List result = redisTemplate.executePipelined(newRedisCallback() {
    
    @Override
    
    publicStringdoInRedis(RedisConnection connection)throwsDataAccessException{
    
    StringRedisConnection src = (StringRedisConnection)connection;
    
    for(String k : keys) {
    
    src.get(k);
    
    }
    
    returnnull;
    
    }
    
    });
    
    returnresult;
    
    }
    
    // Hash(哈希表)
    
    /**
    
    * 实现命令:HSET key field value,将哈希表 key中的域 field的值设为 value
    
    *
    
    *@paramkey
    
    *@paramfield
    
    *@paramvalue
    
    */
    
    publicvoidhset(String key, String field, Object value){
    
    redisTemplate.opsForHash().put(key, field, value);
    
    }
    
    /**
    
    * 实现命令:HGET key field,返回哈希表 key中给定域 field的值
    
    *
    
    *@paramkey
    
    *@paramfield
    
    *@return
    
    */
    
    publicStringhget(String key, String field){
    
    return(String) redisTemplate.opsForHash().get(key, field);
    
    }
    
    /**
    
    * 实现命令:HDEL key field [field ...],删除哈希表 key 中的一个或多个指定域,不存在的域将被忽略。
    
    *
    
    *@paramkey
    
    *@paramfields
    
    */
    
    publicvoidhdel(String key, Object... fields){
    
    redisTemplate.opsForHash().delete(key, fields);
    
    }
    
    /**
    
    * 实现命令:HGETALL key,返回哈希表 key中,所有的域和值。
    
    *
    
    *@paramkey
    
    *@return
    
    */
    
    publicMaphgetall(String key){
    
    returnredisTemplate.opsForHash().entries(key);
    
    }
    
    // List(列表)
    
    /**
    
    * 实现命令:LPUSH key value,将一个值 value插入到列表 key的表头
    
    *
    
    *@paramkey
    
    *@paramvalue
    
    *@return执行 LPUSH命令后,列表的长度。
    
    */
    
    publiclonglpush(String key, String value){
    
    returnredisTemplate.opsForList().leftPush(key, value);
    
    }
    
    /**
    
    * 实现命令:LPOP key,移除并返回列表 key的头元素。
    
    *
    
    *@paramkey
    
    *@return列表key的头元素。
    
    */
    
    publicStringlpop(String key){
    
    return(String)redisTemplate.opsForList().leftPop(key);
    
    }
    
    /**
    
    * 实现命令:RPUSH key value,将一个值 value插入到列表 key的表尾(最右边)。
    
    *
    
    *@paramkey
    
    *@paramvalue
    
    *@return执行 LPUSH命令后,列表的长度。
    
    */
    
    publiclongrpush(String key, String value){
    
    returnredisTemplate.opsForList().rightPush(key, value);
    
    }
    
    }
    

    相关文章

      网友评论

          本文标题:redis工具类

          本文链接:https://www.haomeiwen.com/subject/uppuphtx.html