zoukankan      html  css  js  c++  java
  • springBoot整合Redis

    准备工作

       安装redis最新4.0.6或者以前版本,尽量安装在linux上,并开启服务。教程很多,不再赘述。

       在JAVASE 可以使用最新Jedis 2.9.0或之前版本。与数据库连接池相同,单例实例化JedisPool,从中getSource()获取Jedis实例。

       本文主旨记录,springMVC或者SpringBoot整合Redis

    SpringBoot整合Redis

            pom.xml中引入redis依赖,使用版本1.5.2:

     <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-redis</artifactId>
                <version>1.5.2.RELEASE</version>
      </dependency>
    

      在resources中配置application.properties,自动创建JedisConnectionFactory

    # Redis数据库索引(默认为0)
    spring.redis.database=0
    # Redis服务器地址
    spring.redis.host=127.0.0.1
    # Redis服务器连接端口
    spring.redis.port=6379  
    # Redis服务器连接密码(默认为空)
    spring.redis.password=
    # 连接池最大连接数(使用负值表示没有限制)
    spring.redis.pool.max-active=8
    # 连接池最大阻塞等待时间(使用负值表示没有限制)
    spring.redis.pool.max-wait=-1
    # 连接池中的最大空闲连接
    spring.redis.pool.max-idle=8
    # 连接池中的最小空闲连接
    spring.redis.pool.min-idle=3
    # 连接超时时间(毫秒)
    spring.redis.timeout=2000
    

      以上工作完成后,就要获取RedisTemplate对象,SpringBoot已经自动配置此对象,需要直接Autowire便可使用。在spring.redis.core中有许多数据模型,使用StringRedisTemplate对Map<String,String>操作是比较方便的,客户端不会出现/Xe/XA序列化加密形式的存储,方便后台维护。通过valOps进行set/get操作,具体代码见下:

     @Autowired
        private StringRedisTemplate<Object, Object> stringRedisTemplate;
     @Resource(name=“stringRedisTemplate”) 
         private ValueOperations<Object,Object> valOps;
    

     但存储不一定都只会使用String类型变量,所以需要重新定义RedisTemplate,使key使用StringRedisSerializer序列化,value使用Jackson2JsonRedisSerializer序列化

    @Configuration
    public class configuration {
        @Bean
        public RedisTemplate<Object,Object> redisTemplate(RedisConnectionFactory factory){
    
             RedisTemplate<Object,Object> template=new RedisTemplate<Object, Object>();
    
             template.setConnectionFactory(factory);
    
            Jackson2JsonRedisSerializer valueSerializer=new Jackson2JsonRedisSerializer(Object.class);
    
            ObjectMapper om=new ObjectMapper();
    
            om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
    
            om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
    
            valueSerializer.setObjectMapper(om);
    
            template.setValueSerializer(valueSerializer);
    
            template.setKeySerializer(new StringRedisSerializer());
    return template; } }

     在UserDao中,注入redisTemplate对象,可使用不同的类,比如HashOperation/SetOperation/ZSetOperation/ListOperation四大基本类型的操作和一些redis操作。ValueOperation提供get set 和multiget multiset等操作,但若需要事物或者删除操作,需要获取valOps.getOperation()再进行操作。

        @Autowired
        private RedisTemplate<Object, Object> redisTemplate;
        @Resource(name="redisTemplate")
        private ValueOperations<Object,Object> valOps;

    SpringMVC整合Redis

       在springMvc进行整合,只是将RedisConnectionFactory通过配置文件进行实例化,配置文件与application.properties相同。只需在上面配置类里加上JedisConnectionFactory注入代码,见下:

        @Value("${spring.redis.database}")
        private int dateBase;
        @Value("${spring.redis.host}")
        private String host;
        @Value("${spring.redis.port}")
        private int port;
        @Value("${spring.redis.password}")
        private String password;
        @Value("${spring.redis.pool.max-active}")
        private int maxTotal;
        @Value("${spring.redis.pool.max-wait}")
        private int maxWait;
        @Value("${spring.redis.pool.max-idle}")
        private int maxIdle;
        @Value("${spring.redis.pool.min-idle}")
        private int minIdle;
        @Value("${spring.redis.timeout}")
        private int timeout;
    
        @Bean
        JedisConnectionFactory redisConnectionFactory() {
            JedisConnectionFactory factory = new JedisConnectionFactory();
            factory.setDatabase(dateBase);
            factory.setHostName(host);
            factory.setPort(port);
            factory.setPassword(password);
            JedisPoolConfig poolConfig = new JedisPoolConfig();
            poolConfig.setMaxIdle(maxIdle);
            poolConfig.setMinIdle(minIdle);
            poolConfig.setMaxWaitMillis(maxWait);
            poolConfig.setMaxTotal(maxTotal);
            factory.setPoolConfig(poolConfig);
            factory.setTimeout(timeout);
            return factory;
        }
    
  • 相关阅读:
    jsp转向
    什么是 XDoclet?
    tomcat中的几点配置说明
    mysql5问题
    POJ 3734 Blocks
    POJ 2409 Let it Bead
    HDU 1171 Big Event in HDU
    POJ 3046 Ant Counting
    HDU 2082 找单词
    POJ 1286 Necklace of Beads
  • 原文地址:https://www.cnblogs.com/CaesarLinsa/p/8098931.html
Copyright © 2011-2022 走看看