Spring BootとRedis Cluster RedisTemplateの組み合わせ

62957 ワード

  • pom依存
  • yml構成
  • 構成クラス
  • RedisProperties.java
  • RedisConfig.java


  • 対RedisTemplateのパッケージ
  • インタフェースBaseRedisDaoInter
  • BaseRedisDao
  • を実現

  • 呼び出し
  • Redis Cluster構築:Redis Clusterはゼロからインストールして詳しく説明する
    pom依存
    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-data-redisartifactId>
    dependency>

    yml構成
    spring:
      redis:
        cluster:
          #   Redis     
          nodes: 192.168.117.135:6379,192.168.117.135:6380,192.168.117.136:7379,192.168.117.136:7380,192.168.117.137:8379,192.168.117.137:8380
          #         
          command-timeout: 15000
          #     
          max-attempts: 5
          #                    
          max-redirects: 3
          #         (          )
          max-active: 16
          #            (          )
          max-wait: -1
          #            
          max-idle: 8
          #            
          min-idle: 0
          #                ,      ,                
          test-on-borrow: true

    クラスの構成
    RedisProperties.java
    import lombok.Data;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.stereotype.Component;
    
    /**
     * @Author:    
     * @Description:Redis       
     * @CreateDate:13:48 2018/7/4
     */
    @Component
    @ConfigurationProperties(prefix = "spring.redis.cluster")
    @Data
    public class RedisProperties {
    
        private String nodes;
    
        private Integer commandTimeout;
    
        private Integer maxAttempts;
    
        private Integer maxRedirects;
    
        private Integer maxActive;
    
        private Integer maxWait;
    
        private Integer maxIdle;
    
        private Integer minIdle;
    
        private boolean testOnBorrow;
    
    }

    RedisConfig.java
    import com.fasterxml.jackson.annotation.JsonAutoDetect;
    import com.fasterxml.jackson.annotation.PropertyAccessor;
    import com.fasterxml.jackson.databind.ObjectMapper;
    import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.data.redis.connection.RedisClusterConfiguration;
    import org.springframework.data.redis.connection.RedisConnectionFactory;
    import org.springframework.data.redis.connection.RedisNode;
    import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
    import org.springframework.data.redis.core.RedisTemplate;
    import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
    import org.springframework.data.redis.serializer.StringRedisSerializer;
    import redis.clients.jedis.JedisCluster;
    import redis.clients.jedis.JedisPoolConfig;
    
    import javax.annotation.Resource;
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * @Author:    
     * @Description:Redis    
     * @CreateDate:13:48 2018/7/4
     */
    @Configuration
    @ConditionalOnClass(JedisCluster.class)
    public class RedisConfig {
    
        @Resource
        private RedisProperties redisProperties;
    
        /**
         *    Redis      
         */
        @Bean
        public JedisPoolConfig getJedisPoolConfig() {
            JedisPoolConfig jedisPoolConfig =new JedisPoolConfig();
            jedisPoolConfig.setMaxIdle(redisProperties.getMaxIdle());
            jedisPoolConfig.setMaxWaitMillis(redisProperties.getMaxWait());
            jedisPoolConfig.setTestOnBorrow(redisProperties.isTestOnBorrow());
    
            return jedisPoolConfig;
        }
    
        /**
         *    Redis Cluster   
         */
        @Bean
        public RedisClusterConfiguration getJedisCluster() {
            RedisClusterConfiguration redisClusterConfiguration = new RedisClusterConfiguration();
            redisClusterConfiguration.setMaxRedirects(redisProperties.getMaxRedirects());
    
            List nodeList = new ArrayList<>();
    
            String[] cNodes = redisProperties.getNodes().split(",");
            //       
            for(String node : cNodes) {
                String[] hp = node.split(":");
                nodeList.add(new RedisNode(hp[0], Integer.parseInt(hp[1])));
            }
            redisClusterConfiguration.setClusterNodes(nodeList);
    
            return redisClusterConfiguration;
        }
    
        /**
         *    Redis     
         */
        @Bean
        public JedisConnectionFactory getJedisConnectionFactory(RedisClusterConfiguration redisClusterConfiguration, JedisPoolConfig jedisPoolConfig) {
            JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory(redisClusterConfiguration, jedisPoolConfig);
            return jedisConnectionFactory;
        }
    
        /**
         *       redis       
         *  redisTemplate        jdkSerializeable
         *          ,  key     ,         
         */
        @Bean
        public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {
            RedisTemplate redisTemplate = new RedisTemplate<>();
            redisTemplate.setConnectionFactory(redisConnectionFactory);
            Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
            ObjectMapper objectMapper = new ObjectMapper();
            objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
            objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
            jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
    
            redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
            redisTemplate.setKeySerializer(new StringRedisSerializer());
            redisTemplate.setHashKeySerializer(new StringRedisSerializer());
            redisTemplate.afterPropertiesSet();
    
            return redisTemplate;
        }
    
    }

    RedisTemplateのパッケージ
    インタフェースBaseRedisDaoInter
    import org.springframework.data.redis.connection.DataType;
    import org.springframework.data.redis.core.ZSetOperations;
    
    import java.util.List;
    import java.util.Map;
    import java.util.Set;
    import java.util.TreeSet;
    
    /**
     * @Author:    
     * @Description:  Redis Dao  
     * @CreateDate:14:56 2018/3/8
     */
    public interface BaseRedisDaoInter {
    
        /**
         *   Redis      key
         *
         * @return
         */
        Set getAllKeys();
    
        /**
         *        key-value
         * @return
         */
        Map getAllString();
    
        /**
         *      Set -key-value
         * @return
         */
        Map> getAllSet();
    
        /**
         *      List -key-value
         * @return
         */
        Map> getAllList();
    
        /**
         *      Map -key-value
         * @return
         */
        Map> getAllMap();
    
        /**
         *     list
         *
         * @param key  
         * @param objectList    
         */
        void addList(K key, List objectList);
    
        /**
         *  list    
         *
         * @param key  
         * @param obj  
         * @return    list    
         */
        long addList(K key, V obj);
    
        /**
         *  list       
         *
         * @param key  
         * @param obj         
         * @return    list    
         */
        long addList(K key, V... obj);
    
        /**
         *   list
         *
         * @param key List key
         * @param s     
         * @param e      
         * @return     
         */
        List getList(K key, long s, long e);
    
        /**
         *      list
         *
         * @param key  
         * @return     
         */
        List getList(K key);
    
        /**
         *   list        
         *
         * @param key  
         * @return      
         */
        long getListSize(K key);
    
        /**
         *   list     
         *    list  count value object  ,         ,
         *    count 0,    list  value object     ,
         *        value object  ,        
         *
         * @param key  
         * @param object  
         * @return       
         */
        long removeListValue(K key, V object);
    
        /**
         *   list   
         *
         * @param key  
         * @param object  
         * @return       
         */
        long removeListValue(K key, V... object);
    
        /**
         *     key   value
         *
         * @param keys  
         */
        void remove(final K... keys);
    
        /**
         *     
         *    key      
         *
         * @param key
         */
        void remove(final K key);
    
        /**
         *   Set     
         *
         * @param key  
         * @param time       
         * @return     
         */
        Boolean setSetExpireTime(String key, Long time);
    
        /**
         *      ZSet    -key-value       
         *
         * @return Map  
         */
        Map> getAllZSetReverseRange();
    
        /**
         *      ZSet    -key-value       
         *
         * @return Map  
         */
        Map> getAllZSetRange();
    
        /**
         *       ZSet   
         *
         * @param key  
         * @param s   
         * @param e   
         */
        void removeZSetRangeByScore(String key, double s, double e);
    
        /**
         *   ZSet     
         *
         * @param key  
         * @param time      -  s
         * @return     
         */
        Boolean setZSetExpireTime(String key, Long time);
    
        /**
         *         key   value
         *
         * @param key  
         * @return     
         */
        boolean exists(final K key);
    
        /**
         *   String       
         *
         * @param key  
         * @return  
         */
        V get(final K key);
    
        /**
         *   String          
         *
         * @param key      
         * @return    
         */
        List get(final K... key);
    
        /**
         *                     
         *
         * @param regKey    
         * @return    
         */
        List getByRegular(final K regKey);
    
        /**
         *           
         *
         * @param key  
         * @param value  
         */
        void set(final K key, V value);
    
        /**
         *     
         *
         * @param key  
         * @param value  
         * @param expireTime      -  s
         */
        void set(final K key, V value, Long expireTime);
    
        /**
         *     key     (  : )
         *
         * @param key  
         * @param expireTime      -  s
         * @return     
         */
        boolean setExpireTime(K key, Long expireTime);
    
        /**
         *   key   
         *
         * @param key  
         * @return     
         */
        DataType getType(K key);
    
        /**
         *   Map      
         *
         * @param key Map   key
         * @param field Map     key
         */
        void removeMapField(K key, V... field);
    
        /**
         *   Map  
         *
         * @param key Map   key
         * @return Map  
         */
        Map getMap(K key);
    
        /**
         *   Map     
         *
         * @param key Map   key
         * @return Map   
         */
        Long getMapSize(K key);
    
        /**
         *   Map        
         *
         * @param key Map   key
         * @param field Map     key
         * @return Map  Value
         */
         T getMapField(K key, K field);
    
        /**
         *   Map   key key    
         *
         * @param key Map   key
         * @param field Map  key
         * @return     
         */
        Boolean hasMapKey(K key, K field);
    
        /**
         *   Map  key value
         *
         * @param key Map   key
         * @return Map     
         */
        List getMapFieldValue(K key);
    
        /**
         *   Map key
         *
         * @param key Map   key
         * @return Map key   
         */
        Set getMapFieldKey(K key);
    
        /**
         *   Map
         *
         * @param key  
         * @param map  
         */
        void addMap(K key, Map map);
    
        /**
         *  key   Map       
         *
         * @param key cache  key
         * @param field Map   key
         * @param value  
         */
        void addMap(K key, K field, Object value);
    
        /**
         *  key   Map       ,     
         *
         * @param key cache  key
         * @param field Map   key
         * @param time     -  Map     
         * @param value  
         */
        void addMap(K key, K field, V value, long time);
    
        /**
         *  Set     
         *
         * @param key   key
         * @param obj  
         */
        void addSet(K key, V... obj);
    
        /**
         *   Set     
         *
         * @param key   key
         * @param obj  
         */
        long removeSetValue(K key, V obj);
    
        /**
         *   Set         
         *
         * @param key   key
         * @param obj  
         */
        long removeSetValue(K key, V... obj);
    
        /**
         *   Set    
         *
         * @param key   key
         */
        long getSetSize(K key);
    
        /**
         *   Set        
         *
         * @param key   key
         */
        Boolean hasSetValue(K key, V obj);
    
        /**
         *     Set
         *
         * @param key   key
         */
        Set getSet(K key);
    
        /**
         *   Set  
         *
         * @param key  
         * @param otherKey     
         * @return     Set      
         */
        Set getSetUnion(K key, K otherKey);
    
        /**
         *   Set  
         *
         * @param key  
         * @param set   Set  
         * @return     Set      Set     
         */
        Set getSetUnion(K key, Set set);
    
        /**
         *   Set  
         *
         * @param key  
         * @param otherKey     
         * @return     Set      
         */
        Set getSetIntersect(K key, K otherKey);
    
        /**
         *   Set  
         *
         * @param key  
         * @param set   Set  
         * @return     Set      Set     
         */
        Set getSetIntersect(K key, Set set);
    
        /**
         *        *      
         *
         * @param blear     
         */
        void removeBlear(K blear);
    
        /**
         *            *      
         *
         * @param blears         
         */
        void removeBlear(K... blears);
    
        /**
         *   key        key          false
         *
         * @param oldKey    key  
         * @param newKey  key  
         * @return       
         */
        Boolean renameIfAbsent(String oldKey, String newKey);
    
        /**
         *           key-value
         *
         * @param blears   
         */
        void removeByRegular(String blears);
    
        /**
         *           key-value
         *
         * @param blears       
         */
        void removeByRegular(String... blears);
    
        /**
         *            Map  key-value
         *
         * @param key  
         * @param blear   
         */
        void removeMapFieldByRegular(K key, K blear);
    
        /**
         *            Map  key-value
         *
         * @param key  
         * @param blears       
         */
        void removeMapFieldByRegular(K key, K... blears);
    
        /**
         *   key    value
         *
         * @param key  
         * @param value      
         * @return       
         */
        Long removeZSetValue(K key, V... value);
    
        /**
         *   key ZSet
         *
         * @param key  
         */
        void removeZSet(K key);
    
        /**
         *  ,  K   ,  start<=index<=end     
         *
         * @param key  
         * @param start       
         * @param end       
         */
        void removeZSetRange(K key, Long start, Long end);
    
        /**
         *     key      key1        key2 
         *          ,    
         *    key2      
         *
         * @param key  
         * @param key1  1
         * @param key2  2
         */
        void setZSetUnionAndStore(String key, String key1, String key2);
    
        /**
         *         ZSET,  
         *
         * @param key  
         * @return     
         */
         T getZSetRange(K key);
    
        /**
         *       ZSET
         *    K   ,  start<=index<=end     ,  
         *
         * @param key  
         * @param start     
         * @param end     
         * @return     
         */
         T getZSetRange(K key, long start, long end);
    
        /**
         *         ZSET,  
         *
         * @param key  
         * @return     
         */
        Set getZSetReverseRange(K key);
    
        /**
         *       ZSET
         *    K   ,  start<=index<=end     ,  
         *
         * @param key  
         * @param start     
         * @param end     
         * @return     
         */
        Set getZSetReverseRange(K key, long start, long end);
    
        /**
         *     (  )  ZSET      -    
         *
         * @param key  
         * @param start   
         * @param end   
         * @return     
         */
        Set getZSetRangeByScore(String key, double start, double end);
    
        /**
         *     (  )  ZSET      -    
         *
         * @param key  
         * @param start   
         * @param end   
         * @return     
         */
        Set getZSetReverseRangeByScore(String key, double start, double end);
    
        /**
         *   K   ,  start<=index<=end     
         *        (  score value),  
         *
         * @param key  
         * @param start   
         * @param end   
         * @return     
         */
        Set> getZSetRangeWithScores(K key, long start, long end);
    
        /**
         *   K   ,  start<=index<=end     
         *        (  score value),  
         *
         * @param key  
         * @param start   
         * @param end   
         * @return     
         */
        Set> getZSetReverseRangeWithScores(K key, long start, long end);
    
        /**
         *   K   
         *        (  score value),  
         *
         * @param key  
         * @return     
         */
        Set> getZSetRangeWithScores(K key);
        /**
         *   K   
         *        (  score value),  
         *
         * @param key  
         * @return     
         */
        Set> getZSetReverseRangeWithScores(K key);
    
        /**
         *   K   ,sMin<=score<=sMax     
         *
         * @param key  
         * @param sMin   
         * @param sMax   
         * @return   
         */
        long getZSetCountSize(K key, double sMin, double sMax);
    
        /**
         *   Zset   K       
         *
         * @param key  
         * @return      
         */
        long getZSetSize(K key);
    
        /**
         *     K   ,value obj     
         *
         * @param key  
         * @param value  
         * @return   
         */
        double getZSetScore(K key, V value);
    
        /**
         *       ,delta   
         *
         * @param key  
         * @param value  
         * @param delta   
         * @return   
         */
        double incrementZSetScore(K key, V value, double delta);
    
        /**
         *       ZSET
         *      score    ,    K(1)==V(n),V(1)=S(1)
         *
         * @param key  
         * @param score   
         * @param value  
         * @return     
         */
        Boolean addZSet(String key, double score, Object value);
    
        /**
         *       ZSET
         *
         * @param key  
         * @param value  
         * @return   
         */
        Long addZSet(K key, TreeSet value);
    
        /**
         *       ZSET
         *
         * @param key  
         * @param score   
         * @param value  
         * @return     
         */
        Boolean addZSet(K key, double[] score, Object[] value);
    
    }

    BaseRedisDaoの実装
    import com.lynchj.rediscluster.dao.BaseRedisDaoInter;
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.data.redis.connection.DataType;
    import org.springframework.data.redis.core.RedisTemplate;
    import org.springframework.data.redis.core.ZSetOperations;
    import org.springframework.stereotype.Repository;
    import org.springframework.util.CollectionUtils;
    
    import javax.annotation.Resource;
    import java.util.*;
    import java.util.concurrent.TimeUnit;
    import java.util.regex.Pattern;
    
    /**
     * @Author:    
     * @Description:  Redis Dao  
     *                      -           -         
     * @CreateDate:14:56 2018/3/8
     */
    @Repository
    @Slf4j
    public class BaseRedisDao implements BaseRedisDaoInter {
    
        @Resource(name = "redisTemplate")
        private RedisTemplate redisTemplate;
    
        /**     ,        */
        private static final Integer TIMES = 3;
    
        @Override
        public Set getAllKeys() {
            return redisTemplate.keys("*");
        }
    
        @Override
        public Map getAllString() {
            Set stringSet = getAllKeys();
            Map map = new HashMap();
            Iterator iterator = stringSet.iterator();
            while (iterator.hasNext()) {
                String k = iterator.next();
                if (getType(k) == DataType.STRING) {
                    map.put(k, get(k));
                }
            }
            return map;
        }
    
        @Override
        public Map> getAllSet() {
            Set stringSet = getAllKeys();
            Map> map = new HashMap>();
            Iterator iterator = stringSet.iterator();
            while (iterator.hasNext()) {
                String k = iterator.next();
                if (getType(k) == DataType.SET) {
                    map.put(k, getSet(k));
                }
            }
            return map;
        }
    
        @Override
        public Map> getAllZSetRange() {
            Set stringSet = getAllKeys();
            Map> map = new HashMap>();
            Iterator iterator = stringSet.iterator();
            while (iterator.hasNext()) {
                String k = iterator.next();
                if (getType(k) == DataType.ZSET) {
                    log.debug("k:" + k);
                    map.put(k, getZSetRange(k));
                }
            }
            return map;
        }
    
        @Override
        public Map> getAllZSetReverseRange() {
            Set stringSet = getAllKeys();
            Map> map = new HashMap>();
            Iterator iterator = stringSet.iterator();
            while (iterator.hasNext()) {
                String k = iterator.next();
                if (getType(k) == DataType.ZSET) {
                    map.put(k, getZSetReverseRange(k));
                }
            }
            return map;
        }
    
        @Override
        public Map> getAllList() {
            Set stringSet = getAllKeys();
            Map> map = new HashMap>();
            Iterator iterator = stringSet.iterator();
            while (iterator.hasNext()) {
                String k = iterator.next();
                if (getType(k) == DataType.LIST) {
                    map.put(k, getList(k));
                }
            }
            return map;
        }
    
        @Override
        public Map> getAllMap() {
            Set stringSet = getAllKeys();
            Map> map = new HashMap>();
            Iterator iterator = stringSet.iterator();
            while (iterator.hasNext()) {
                String k = iterator.next();
                if (getType(k) == DataType.HASH) {
                    map.put(k, getMap(k));
                }
            }
            return map;
        }
    
        @Override
        public void addList(String key, List objectList) {
            for (Object obj : objectList) {
                addList(key, obj);
            }
        }
    
        @Override
        public long addList(String key, Object obj) {
            return redisTemplate.boundListOps(key).rightPush(obj);
        }
    
        @Override
        public long addList(String key, Object... obj) {
            return redisTemplate.boundListOps(key).rightPushAll(obj);
        }
    
        @Override
        public List getList(String key, long s, long e) {
            return redisTemplate.boundListOps(key).range(s, e);
        }
    
        @Override
        public List getList(String key) {
            return redisTemplate.boundListOps(key).range(0, getListSize(key));
        }
    
        @Override
        public long getListSize(String key) {
            return redisTemplate.boundListOps(key).size();
        }
    
        @Override
        public long removeListValue(String key, Object object) {
            return redisTemplate.boundListOps(key).remove(0, object);
        }
    
        @Override
        public long removeListValue(String key, Object... objects) {
            long r = 0;
            for (Object object : objects) {
                r += removeListValue(key, object);
            }
            return r;
        }
    
        @Override
        public void remove(String... key) {
            if (key != null && key.length > 0) {
                if (key.length == 1) {
                    remove(key[0]);
                } else {
                    redisTemplate.delete(CollectionUtils.arrayToList(key));
                }
            }
        }
    
        @Override
        public void removeBlear(String... blears) {
            for (String blear : blears) {
                removeBlear(blear);
            }
        }
    
        @Override
        public Boolean renameIfAbsent(String oldKey, String newKey) {
            return redisTemplate.renameIfAbsent(oldKey, newKey);
        }
    
        @Override
        public void removeBlear(String blear) {
            redisTemplate.delete(redisTemplate.keys(blear));
        }
    
        @Override
        public void removeByRegular(String... blears) {
            for (String blear : blears) {
                removeBlear(blear);
            }
        }
    
        @Override
        public void removeByRegular(String blear) {
            Set stringSet = getAllKeys();
            for (String s : stringSet) {
                if (Pattern.compile(blear).matcher(s).matches()) {
                    redisTemplate.delete(s);
                }
            }
        }
    
        @Override
        public void removeMapFieldByRegular(String key, String... blears) {
            for (String blear : blears) {
                removeMapFieldByRegular(key, blear);
            }
        }
    
        @Override
        public void removeMapFieldByRegular(String key, String blear) {
            Map map = getMap(key);
            Set stringSet = map.keySet();
            for (String s : stringSet) {
                if (Pattern.compile(blear).matcher(s).matches()) {
                    redisTemplate.boundHashOps(key).delete(s);
                }
            }
        }
    
        @Override
        public Long removeZSetValue(String key, Object... value) {
            return redisTemplate.boundZSetOps(key).remove(value);
        }
    
        @Override
        public void removeZSet(String key) {
            removeZSetRange(key, 0L, getZSetSize(key));
        }
    
        @Override
        public void removeZSetRange(String key, Long start, Long end) {
            redisTemplate.boundZSetOps(key).removeRange(start, end);
        }
    
        @Override
        public void setZSetUnionAndStore(String key, String key1, String key2) {
            redisTemplate.boundZSetOps(key).unionAndStore(key1, key2);
        }
    
        @Override
        public Set getZSetRange(String key) {
            return getZSetRange(key, 0, getZSetSize(key));
        }
    
        @Override
        public Set getZSetRange(String key, long s, long e) {
            return redisTemplate.boundZSetOps(key).range(s, e);
        }
    
        @Override
        public Set getZSetReverseRange(String key) {
            return getZSetReverseRange(key, 0, getZSetSize(key));
        }
    
        @Override
        public Set getZSetReverseRange(String key, long start, long end) {
            return redisTemplate.boundZSetOps(key).reverseRange(start, end);
        }
    
        @Override
        public Set getZSetRangeByScore(String key, double start, double end) {
            return redisTemplate.boundZSetOps(key).rangeByScore(start, end);
        }
    
        @Override
        public Set getZSetReverseRangeByScore(String key, double start, double end) {
            return redisTemplate.boundZSetOps(key).reverseRangeByScore(start, end);
        }
    
        @Override
        public Set> getZSetRangeWithScores(String key, long start, long end) {
            return redisTemplate.boundZSetOps(key).rangeWithScores(start, end);
        }
    
        @Override
        public Set> getZSetReverseRangeWithScores(String key, long start, long end) {
            return redisTemplate.boundZSetOps(key).reverseRangeWithScores(start, end);
        }
    
        @Override
        public Set> getZSetRangeWithScores(String key) {
            return getZSetRangeWithScores(key, 0, getZSetSize(key));
        }
    
        @Override
        public Set> getZSetReverseRangeWithScores(String key) {
            return getZSetReverseRangeWithScores(key, 0, getZSetSize(key));
        }
    
        @Override
        public long getZSetCountSize(String key, double sMin, double sMax) {
            return redisTemplate.boundZSetOps(key).count(sMin, sMax);
        }
    
        @Override
        public long getZSetSize(String key) {
            return redisTemplate.boundZSetOps(key).size();
        }
    
        @Override
        public double getZSetScore(String key, Object value) {
            return redisTemplate.boundZSetOps(key).score(value);
        }
    
        @Override
        public double incrementZSetScore(String key, Object value, double delta) {
            return redisTemplate.boundZSetOps(key).incrementScore(value, delta);
        }
    
        @Override
        public Boolean addZSet(String key, double score, Object value) {
            return redisTemplate.boundZSetOps(key).add(value, score);
        }
    
        @Override
        public Long addZSet(String key, TreeSet value) {
            return redisTemplate.boundZSetOps(key).add(value);
        }
    
        @Override
        public Boolean addZSet(String key, double[] score, Object[] value) {
            if (score.length != value.length) {
                return false;
            }
            for (int i = 0; i < score.length; i++) {
                if (addZSet(key, score[i], value[i]) == false) {
                    return false;
                }
            }
            return true;
        }
    
        @Override
        public void remove(String key) {
            if (exists(key)) {
                redisTemplate.delete(key);
            }
        }
    
        @Override
        public void removeZSetRangeByScore(String key, double s, double e) {
            redisTemplate.boundZSetOps(key).removeRangeByScore(s, e);
        }
    
        @Override
        public Boolean setSetExpireTime(String key, Long time) {
            return redisTemplate.boundSetOps(key).expire(time, TimeUnit.SECONDS);
        }
    
        @Override
        public Boolean setZSetExpireTime(String key, Long time) {
            return redisTemplate.boundZSetOps(key).expire(time, TimeUnit.SECONDS);
        }
    
        @Override
        public boolean exists(String key) {
            return redisTemplate.hasKey(key);
        }
    
        @Override
        public Object get(String key) {
            return redisTemplate.boundValueOps(key).get();
        }
    
        @Override
        public List get(String... keys) {
            List list = new ArrayList();
            for (String key : keys) {
                list.add(get(key));
            }
            return list;
        }
    
        @Override
        public List getByRegular(String regKey) {
            Set stringSet = getAllKeys();
            List objectList = new ArrayList();
            for (String s : stringSet) {
                if (Pattern.compile(regKey).matcher(s).matches() && getType(s) == DataType.STRING) {
                    objectList.add(get(s));
                }
            }
            return objectList;
        }
    
        @Override
        public void set(String key, Object value) {
            redisTemplate.boundValueOps(key).set(value);
        }
    
        @Override
        public void set(String key, Object value, Long expireTime) {
            redisTemplate.boundValueOps(key).set(value, expireTime, TimeUnit.SECONDS);
        }
    
        @Override
        public boolean setExpireTime(String key, Long expireTime) {
            return redisTemplate.expire(key, expireTime, TimeUnit.SECONDS);
        }
    
    
        @Override
        public DataType getType(String key) {
            return redisTemplate.type(key);
        }
    
    
        @Override
        public void removeMapField(String key, Object... field) {
            redisTemplate.boundHashOps(key).delete(field);
        }
    
        @Override
        public Long getMapSize(String key) {
            return redisTemplate.boundHashOps(key).size();
        }
    
        @Override
        public Map getMap(String key) {
            return redisTemplate.boundHashOps(key).entries();
        }
    
        @Override
        public  T getMapField(String key, String field) {
            return (T) redisTemplate.boundHashOps(key).get(field);
        }
    
        @Override
        public Boolean hasMapKey(String key, String field) {
            return redisTemplate.boundHashOps(key).hasKey(field);
        }
    
        @Override
        public List getMapFieldValue(String key) {
            return redisTemplate.boundHashOps(key).values();
        }
    
        @Override
        public Set getMapFieldKey(String key) {
            return redisTemplate.boundHashOps(key).keys();
        }
    
        @Override
        public void addMap(String key, Map map) {
            redisTemplate.boundHashOps(key).putAll(map);
        }
    
        @Override
        public void addMap(String key, String field, Object value) {
            redisTemplate.boundHashOps(key).put(field, value);
        }
    
        @Override
        public void addMap(String key, String field, Object value, long time) {
            redisTemplate.boundHashOps(key).put(field, value);
            redisTemplate.boundHashOps(key).expire(time, TimeUnit.SECONDS);
        }
    
        @Override
        public void addSet(String key, Object... obj) {
            redisTemplate.boundSetOps(key).add(obj);
        }
    
        @Override
        public long removeSetValue(String key, Object obj) {
            return redisTemplate.boundSetOps(key).remove(obj);
        }
    
        @Override
        public long removeSetValue(String key, Object... obj) {
            if (obj != null && obj.length > 0) {
                return redisTemplate.boundSetOps(key).remove(obj);
            }
            return 0L;
        }
    
        @Override
        public long getSetSize(String key) {
            return redisTemplate.boundSetOps(key).size();
        }
    
        @Override
        public Boolean hasSetValue(String key, Object obj) {
            Boolean boo = null;
            int t = 0;
            while (true) {
                try {
                    boo = redisTemplate.boundSetOps(key).isMember(obj);
                    break;
                } catch (Exception e) {
                    log.error("key[" + key + "],obj[" + obj + "]  Set         ,    :" + e.getMessage());
                    t++;
                }
                if (t > TIMES) {
                    break;
                }
            }
            log.info("key[" + key + "],obj[" + obj + "]    ,boo:" + boo);
            return boo;
        }
    
        @Override
        public Set getSet(String key) {
            return redisTemplate.boundSetOps(key).members();
        }
    
        @Override
        public Set getSetUnion(String key, String otherKey) {
            return redisTemplate.boundSetOps(key).union(otherKey);
        }
    
        @Override
        public Set getSetUnion(String key, Set set) {
            return redisTemplate.boundSetOps(key).union(set);
        }
    
        @Override
        public Set getSetIntersect(String key, String otherKey) {
            return redisTemplate.boundSetOps(key).intersect(otherKey);
        }
    
        @Override
        public Set getSetIntersect(String key, Set set) {
            return redisTemplate.boundSetOps(key).intersect(set);
        }
    
    }

    よびだし
    使用するクラスにRedisTemplateのパッケージDaoを注入すればよい.以下のようにする.
    @Resource
    private BaseRedisDaoInter redisDaoInter;