RedisTemplateパッケージに基づくRedisUtils

82626 ワード

カスタムディレクトリのタイトルをここに書きます
1.アプリケーションの構成properties/yml
spring.redis.host=127.0.0.1
#         ,redis   0 - 15        
spring.redis.database=0
spring.redis.port=6379
# Redis       (    )

spring.redis.password=
#         (          )
spring.redis.jedis.pool.max-active=200
#            (          )
spring.redis.jedis.pool.max-wait=-1
#            
spring.redis.jedis.pool.max-idle=10
#            
spring.redis.jedis.pool.min-idle=0
#       (  )
spring.redis.jedis.pool.time-between-eviction-runs=1000
  • RedisConfiguration構成クラス
  • を作成する
    @Configuration
    @EnableCaching
    public class RedisConfiguration extends CachingConfigurerSupport {
        /**
         *   RedisCacheManager       
         */
        @Bean
        public CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {
            RedisCacheManager redisCacheManager = RedisCacheManager.create(redisConnectionFactory);
            return redisCacheManager;
        }
    	/**
    	*         
    	*/
        @Bean
        public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
            RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
            template.setConnectionFactory(factory);
            Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
            ObjectMapper om = new ObjectMapper();
            om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
            om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
            jackson2JsonRedisSerializer.setObjectMapper(om);
            StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
            // key  String      35
            template.setKeySerializer(stringRedisSerializer);
            // hash key   String      
            template.setHashKeySerializer(stringRedisSerializer);
            // value       jackson
            template.setValueSerializer(jackson2JsonRedisSerializer);
            // hash value       jackson
            template.setHashValueSerializer(jackson2JsonRedisSerializer);
            template.afterPropertiesSet();
            return template;
        }
    
  • パッケージツール類は、主にHash、HashSet、Set、ZSetをパッケージし、自己および追加の必要があればredisTemplateに入ることができる.opsXXXソースコード、自分でカプセル化します.
  • @Component
    public final class RedisUtils {
    
    
        @Autowired
        private RedisTemplate<String, Object> redisTemplate;
    
    
        // =============================common============================
    
        /**
         *         
         *
         * @param key   
         * @param time   ( )
         * @return
         */
    
        public boolean expire(String key, long time) {
    
            try {
    
                if (time > 0) {
                    redisTemplate.expire(key, time, TimeUnit.SECONDS);
                }
                return true;
    
            } catch (Exception e) {
                e.printStackTrace();
                return false;
            }
    
        }
    
    
        /**
         *   key       
         *
         * @param key      null
         * @return   ( )          
         */
    
        public long getExpire(String key) {
            return redisTemplate.getExpire(key, TimeUnit.SECONDS);
        }
    
    
        /**
         *   key    
         *
         * @param key  
         * @return true    false   
         */
    
        public boolean hasKey(String key) {
    
            try {
                return redisTemplate.hasKey(key);
            } catch (Exception e) {
                e.printStackTrace();
                return false;
            }
    
        }
    
    
        /**
         *     
         *
         * @param key           
         */
    
        @SuppressWarnings("unchecked")
    
        public void del(String... key) {
    
            if (key != null && key.length > 0) {
    
                if (key.length == 1) {
    
                    redisTemplate.delete(key[0]);
    
                } else {
    
                    redisTemplate.delete(CollectionUtils.arrayToList(key));
    
                }
    
            }
    
        }
    
    
        // ============================String=============================
    
        /**
         *       
         *
         * @param key  
         * @return  
         */
    
        public Object get(String key) {
    
            return key == null ? null : redisTemplate.opsForValue().get(key);
    
        }
    
    
        /**
         *       
         *
         * @param key    
         * @param value  
         * @return true   false  
         */
    
        public boolean set(String key, Object value) {
    
            try {
    
                redisTemplate.opsForValue().set(key, value);
    
                return true;
    
            } catch (Exception e) {
    
                e.printStackTrace();
    
                return false;
    
            }
    
    
        }
    
    
        /**
         *            
         *
         * @param key    
         * @param value  
         * @param time    ( ) time      time           
         * @return true   false   
         */
    
        public boolean set(String key, Object value, long time) {
    
            try {
    
                if (time > 0) {
    
                    redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);
    
                } else {
    
                    set(key, value);
    
                }
    
                return true;
    
            } catch (Exception e) {
    
                e.printStackTrace();
    
                return false;
    
            }
    
        }
    
    
        /**
         *   
         *
         * @param key    
         * @param delta     (  )
         * @return
         */
    
        public long incr(String key, long delta) {
    
            if (delta < 0) {
    
                throw new RuntimeException("        ");
    
            }
    
            return redisTemplate.opsForValue().increment(key, delta);
    
        }
    
    
        /**
         *   
         *
         * @param key    
         * @param delta     (  )
         * @return
         */
    
        public long decr(String key, long delta) {
    
            if (delta < 0) {
    
                throw new RuntimeException("        ");
    
            }
    
            return redisTemplate.opsForValue().increment(key, -delta);
    
        }
    
    
        // ================================Map=================================
    
        /**
         * HashGet
         *
         * @param key       null
         * @param item      null
         * @return  
         */
    
        public Object hget(String key, String item) {
    
            return redisTemplate.opsForHash().get(key, item);
    
        }
    
    
        /**
         *   hashKey       
         *
         * @param key  
         * @return        
         */
    
        public Map<Object, Object> hmget(String key) {
    
            return redisTemplate.opsForHash().entries(key);
    
        }
    
    
        /**
         * HashSet
         *
         * @param key  
         * @param map       
         * @return true    false   
         */
    
        public boolean hmset(String key, Map<String, Object> map) {
    
            try {
    
                redisTemplate.opsForHash().putAll(key, map);
    
                return true;
    
            } catch (Exception e) {
    
                e.printStackTrace();
    
                return false;
    
            }
    
        }
    
    
        /**
         * HashSet      
         *
         * @param key   
         * @param map        
         * @param time   ( )
         * @return true   false  
         */
    
        public boolean hmset(String key, Map<String, Object> map, long time) {
    
            try {
    
                redisTemplate.opsForHash().putAll(key, map);
    
                if (time > 0) {
    
                    expire(key, time);
    
                }
    
                return true;
    
            } catch (Exception e) {
    
                e.printStackTrace();
    
                return false;
    
            }
    
        }
    
    
        /**
         *    hash      ,        
         *
         * @param key    
         * @param item   
         * @param value  
         * @return true    false  
         */
    
        public boolean hset(String key, String item, Object value) {
    
            try {
                redisTemplate.opsForHash().put(key, item, value);
                return true;
    
            } catch (Exception e) {
    
                e.printStackTrace();
    
                return false;
    
            }
    
        }
    
    
        /**
         *    hash      ,        
         *
         * @param key    
         * @param item   
         * @param value  
         * @param time    ( )   :      hash    ,           
         * @return true    false  
         */
    
        public boolean hset(String key, String item, Object value, long time) {
    
            try {
    
                redisTemplate.opsForHash().put(key, item, value);
    
                if (time > 0) {
    
                    expire(key, time);
    
                }
    
                return true;
    
            } catch (Exception e) {
    
                e.printStackTrace();
    
                return false;
    
            }
    
        }
    
    
        /**
         *   hash    
         *
         * @param key       null
         * @param item            null
         */
    
        public void hdel(String key, Object... item) {
    
            redisTemplate.opsForHash().delete(key, item);
    
        }
    
    
        /**
         *   hash         
         *
         * @param key       null
         * @param item      null
         * @return true    false   
         */
    
        public boolean hHasKey(String key, String item) {
    
            return redisTemplate.opsForHash().hasKey(key, item);
    
        }
    
    
        /**
         * hash        ,                
         *
         * @param key   
         * @param item  
         * @param by       (  )
         * @return
         */
    
        public double hincr(String key, String item, double by) {
    
            return redisTemplate.opsForHash().increment(key, item, by);
    
        }
    
    
        /**
         * hash  
         *
         * @param key   
         * @param item  
         * @param by       (  )
         * @return
         */
    
        public double hdecr(String key, String item, double by) {
            return redisTemplate.opsForHash().increment(key, item, -by);
    
        }
    
    
        // ============================set=============================
    
        /**
         *   key  Set     
         *
         * @param key  
         * @return
         */
    
        public Set<Object> sGet(String key) {
    
            try {
    
                return redisTemplate.opsForSet().members(key);
    
            } catch (Exception e) {
    
                e.printStackTrace();
    
                return null;
    
            }
    
        }
    
    
        /**
         *   value   set   ,    
         *
         * @param key    
         * @param value  
         * @return true    false   
         */
    
        public boolean sHasKey(String key, Object value) {
    
            try {
    
                return redisTemplate.opsForSet().isMember(key, value);
    
            } catch (Exception e) {
    
                e.printStackTrace();
    
                return false;
    
            }
    
        }
    
    
        /**
         *      set  
         *
         * @param key     
         * @param values        
         * @return     
         */
    
        public long sSet(String key, Object... values) {
    
            try {
    
                return redisTemplate.opsForSet().add(key, values);
    
            } catch (Exception e) {
    
                e.printStackTrace();
    
                return 0;
    
            }
    
        }
    
    
        /**
         *  set      
         *
         * @param key     
         * @param time     ( )
         * @param values        
         * @return     
         */
    
        public long sSetAndTime(String key, long time, Object... values) {
    
            try {
                Long count = redisTemplate.opsForSet().add(key, values);
                if (time > 0) {
                    expire(key, time);
                    return count;
                }
            } catch (Exception e) {
                e.printStackTrace();
                return 0;
            }
            return 0;
        }
    
    
        /**
         *   set     
         *
         * @param key  
         * @return
         */
    
        public long sGetSetSize(String key) {
    
            try {
                return redisTemplate.opsForSet().size(key);
            } catch (Exception e) {
                e.printStackTrace();
                return 0;
            }
    
        }
    
    
        /**
         *     value 
         *
         * @param key     
         * @param values        
         * @return      
         */
    
        public long setRemove(String key, Object... values) {
    
            try {
    
                Long count = redisTemplate.opsForSet().remove(key, values);
    
                return count;
    
            } catch (Exception e) {
    
                e.printStackTrace();
    
                return 0;
    
            }
    
        }
    
        // ===============================list=================================
    
    
        /**
         *   list     
         *
         * @param key    
         * @param start   
         * @param end         -     
         * @return
         */
    
        public List<Object> lGet(String key, long start, long end) {
    
            try {
    
                return redisTemplate.opsForList().range(key, start, end);
    
            } catch (Exception e) {
    
                e.printStackTrace();
    
                return null;
    
            }
    
        }
    
    
        /**
         *   list     
         *
         * @param key  
         * @return
         */
    
        public long lGetListSize(String key) {
    
            try {
                return redisTemplate.opsForList().size(key);
            } catch (Exception e) {
                e.printStackTrace();
                return 0;
            }
    
        }
    
    
        /**
         *        list   
         *
         * @param key    
         * @param index    index>= ,    ,      ,    ;index
    
        public Object lGetIndex(String key, long index) {
    
            try {
    
                return redisTemplate.opsForList().index(key, index);
    
            } catch (Exception e) {
    
                e.printStackTrace();
    
                return null;
    
            }
    
        }
    
    
        /**
         *  list    
         *
         * @param key    
         * @param value  
         * @return
         */
    
        public boolean lSet(String key, Object value) {
    
            try {
                redisTemplate.opsForList().rightPush(key, value);
                return true;
            } catch (Exception e) {
                e.printStackTrace();
                return false;
            }
    
        }
    
    
        /**
         *  list    
         *
         * @param key    
         * @param value  
         * @param time    ( )
         * @return
         */
    
        public boolean lSet(String key, Object value, long time) {
    
            try {
                redisTemplate.opsForList().rightPush(key, value);
                if (time > 0) {
                    expire(key, time);
                }
                return true;
            } catch (Exception e) {
                e.printStackTrace();
                return false;
    
            }
        }
    
    
        /**
         *  list    
         *
         * @param key    
         * @param value  
         * @return
         */
    
        public boolean lSet(String key, List<Object> value) {
    
            try {
    
                redisTemplate.opsForList().rightPushAll(key, value);
    
                return true;
    
            } catch (Exception e) {
    
                e.printStackTrace();
    
                return false;
    
            }
    
        }
    
    
        /**
         *  list    
         *
         * @param key    
         * @param value  
         * @param time    ( )
         * @return
         */
    
        public boolean lSet(String key, List<Object> value, long time) {
    
            try {
    
                redisTemplate.opsForList().rightPushAll(key, value);
    
                if (time > 0) {
                    expire(key, time);
                }
                return true;
    
            } catch (Exception e) {
                e.printStackTrace();
                return false;
            }
        }
    
    
        /**
         *       list      
         *
         * @param key    
         * @param index   
         * @param value  
         * @return
         */
    
        public boolean lUpdateIndex(String key, long index, Object value) {
    
            try {
    
                redisTemplate.opsForList().set(key, index, value);
    
                return true;
    
            } catch (Exception e) {
    
                e.printStackTrace();
    
                return false;
    
            }
    
        }
    
        /**
         *   N   value
         *
         * @param key    
         * @param count      
         * @param value  
         * @return      
         */
        public long lRemove(String key, long count, Object value) {
            try {
                Long remove = redisTemplate.opsForList().remove(key, count, value);
                return remove;
            } catch (Exception e) {
                e.printStackTrace();
            }
            return 0;
        }
    
        /**
         * @param key   1
         * @param value 2
         * @param score 3
         * @Description:zset,  key     
         */
        public boolean zAdd(String key, Object value, Integer score) {
            try {
                redisTemplate.opsForZSet().add(key, value, Double.valueOf(score));
                return true;
            } catch (Exception e) {
                e.printStackTrace();
            }
            return false;
        }
    
        /**
         * @Description: zset   key,  score
         * @Date:2020-04-06
         * @param key 1
         * @param val 2
         * @param score 3
         */
        public boolean zAddScore(String key, Object val, Integer score){
            try {
                redisTemplate.opsForZSet().incrementScore(key, val, Double.valueOf(score));
                return true;
            }catch (Exception e){
                e.printStackTrace();
            }
            return false;
        }
    
        public Set<ZSetOperations.TypedTuple<Object>> zRankByRange(String key, Integer start, Integer end){
            try {
                Set<ZSetOperations.TypedTuple<Object>> typedTuples = redisTemplate.opsForZSet().rangeWithScores(key, start, end);
                return typedTuples;
            }catch (Exception e){
                e.printStackTrace();
            }
            return null;
        }
    
        /**
         * @Author Lee
         * @Description:     key        ,  begin,end null     key
         * @Date:2020-04-06
         * @param key 1
         * @param begin 2
         * @param end 3
         */
        public boolean zDelKey(String key, Integer begin, Integer end){
            try {
                if (begin == null && end == null){
                    redisTemplate.opsForZSet().remove(key);
                }else {
                    redisTemplate.opsForZSet().removeRange(key, begin, end);
                }
                return true;
            }catch (Exception e){
                e.printStackTrace();
            }
            return false;
        }
    
        /**
         * @Author Lee
         * @Description:     key         curKey 
         * @Date:2020-04-06
         * @param curKey 1
         * @param yesterKey 2
         * @param beforeKey 3
         * @Return: void
         */
        public void zUniodAndStore(String beforeKey, String yesterKey, String curKey){
            redisTemplate.opsForZSet().unionAndStore(beforeKey, yesterKey, curKey);
        }
    }