美文网首页
redis的一些配置

redis的一些配置

作者: 相信灬你一直在 | 来源:发表于2018-11-28 13:39 被阅读0次
    / 图片.png

    redis的设置:
    redisConfig.java省略了get方法

    @Component
    @ConfigurationProperties(prefix="redis")
    public class RedisConfig {
        private String host;
        private int port;
        private int timeout;//秒
        private String password;
        private int poolMaxTotal;
        private int poolMaxIdle;
        private int poolMaxWait;//秒
    }
    

    创建RedisPool的工程方法
    RedisPoolFactory.java

    @Service
    public class RedisPoolFactory {
    
        @Autowired
        RedisConfig redisConfig;
        
        @Bean
        public JedisPool JedisPoolFactory() {
            JedisPoolConfig poolConfig = new JedisPoolConfig();
            poolConfig.setMaxIdle(redisConfig.getPoolMaxIdle());
            poolConfig.setMaxTotal(redisConfig.getPoolMaxTotal());
            poolConfig.setMaxWaitMillis(redisConfig.getPoolMaxWait() * 1000);
            JedisPool jp = new JedisPool(poolConfig, redisConfig.getHost(), redisConfig.getPort(),
                    redisConfig.getTimeout()*1000, redisConfig.getPassword(), 0);
            return jp;
        }
        
    }
    
    

    生成Redis的工具前设置可扩展的存储key方法
    设置接口函数KeyPrefix.java写入两个方法用来获取存入的有效时间和自定义前缀

    public interface KeyPrefix {
            
        public int expireSeconds();
        
        public String getPrefix();
        
    }
    

    用BasePrefix.java去实现这个接口作为后续扩展所需集成的类

    public abstract class BasePrefix implements KeyPrefix {
    
        private int expireSeconds;
    
        private String prefix;
    
        public BasePrefix(String prefix) {//0代表永不过期
                this(0, prefix);
        }
    
        public BasePrefix(int expireSeconds, String prefix) {
            this.expireSeconds = expireSeconds;
            this.prefix = prefix;
        }
    
        public int expireSeconds() {//默认0代表永不过期
            return expireSeconds;
        }
    
        public String getPrefix() {
            String className = getClass().getSimpleName();
            return className + ":" + prefix;
        }
    
    }
    

    扩展的例子此为自己设置了时间的

    public class MiaoshaUserKey extends BasePrefix {
    
        public static final int TOKEN_EXPIRE = 3600 * 24 * 2;
    
        private MiaoshaUserKey(int expireSeconds, String prefix) {
            super(expireSeconds, prefix);
        }
    
        public static MiaoshaUserKey token = new MiaoshaUserKey(TOKEN_EXPIRE, "tk");
    }
    

    如果不设置时间BasePrefix将时间设置为0 RedisServer调用的时候用set方法而不用setex方法。

    public class UserKey extends BasePrefix{
    
        private UserKey(String prefix) {
            super(prefix);
        }
        public static UserKey getById = new UserKey("id");
        public static UserKey getByName = new UserKey("name");
    

    相关文章

      网友评论

          本文标题:redis的一些配置

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