zoukankan      html  css  js  c++  java
  • redis整合spring @Bean写法

    jedis是一款java连接redis的客户端,spring基于jedis进行了封装,提供了简洁的操作redis的方法。
    使用maven进行管理jar包之间的依赖:

    Code   ViewPrint
    1. <dependency>
    2.             <groupId>org.springframework.data</groupId>
    3.             <artifactId>spring-data-redis</artifactId>
    4.             <version>${spring-data-redis-version}</version>
    5. </dependency>
    6. <dependency>
    7.             <groupId>redis.clients</groupId>
    8.             <artifactId>jedis</artifactId>
    9.             <version>${redis.clients-jedis-version}</version>
    10.  </dependency>

    spring-data-redis需要依赖jedis包,事实上spring-data-redis pom文件中就自动包含了jedis的配置。http://www.mvnrepository.com/ 依据所需要的版本。

    jedis客户端版本过高,我手动采用的是2.7.2的版本的jedis 或导致报错

    spring-data-redis用的1.4.2的版本

    讲jedis的版本号换位2.6.2以下就好了



    (1)、JedisConnectionFactory redis连接工厂
    类似于数据库连接池一样,redis客户端也建立一个连接工厂

    Code   ViewPrint
    1. import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
    2. @Bean
    3.     public JedisConnectionFactory jedisConnectionFactory() {
    4.         JedisConnectionFactory connFactory = new JedisConnectionFactory();
    5.         connFactory.setHostName("127.0.0.1"); //此处可以换成配置文件属性注入进来
    6.         connFactory.setPort(6379);
    7.         connFactory.setUsePool(true);//使用连接池
    8.          JedisPoolConfig config=new JedisPoolConfig();
               config.setMaxTotal(100);
               config.setMaxIdle(30);
               config.setMinIdle(8); 
               config.setMaxWaitMillis(30000);
               //向调用者输出“链接”资源时,是否检测是有有效,如果无效则从连接池中移除,并尝试获取继续获取。设为true,一个挂都不能用 
               config.setTestOnBorrow(false); 
               //向连接池“归还”链接时,是否检测“链接”对象的有效性。
               config.setTestOnReturn(true);
              connFactory.setPoolConfig(config);
       
    9.         return connFactory;
    10.     }

    (2)、redis RedisTemplate
    有了redis连接工厂,就要具体的redis session了,这些都是一个道理。

    Code   ViewPrint
    1. import org.springframework.data.redis.core.RedisTemplate;
    2. import org.springframework.data.redis.serializer.StringRedisSerializer;
    3. @Bean
    4.     public  RedisTemplate<String, String> redis() {
    5.         RedisTemplate<String, String> redisTemplate = new RedisTemplate<String, String>();
    6.         redisTemplate.setConnectionFactory(jedisConnectionFactory());
    7.         redisTemplate.setKeySerializer(new StringRedisSerializer());//key的序列化适配器
    8.         redisTemplate.setValueSerializer(new StringRedisSerializer());//value的序列化适配器,也可以自己编写,大部分场景StringRedisSerializer足以满足需求了。
    9.         return redisTemplate;
    10.     }

    (3)、操作redis

    Code   ViewPrint
    1. import org.springframework.beans.factory.annotation.Autowired;
    2. import org.springframework.data.redis.core.RedisTemplate;
    3. import org.springframework.stereotype.Component;
    4. @Component
    5. public class CacheDemo {
    6.     @Autowired private RedisTemplate<String, String> redis;
    7.     public void set(String key,String value){
    8.         redis.opsForValue().set(key, value);
    9.     }
    10. }

    (4)、总结。
    要是一切事情都像这么简单就好了,不过spring已经封装的极其简洁,操作起来也非常方便。
    redis.opsForValue() 封装操作strings
    redis.opsForList() 封装操作list
    redis.opsForSet() 封装操作sets
    redis.opsForZSet() 封装操作sorted sets
    redis.opsForHash() 封装操作hashs



    redis的三种使用模式: http://blog.csdn.net/zhousenshan/article/details/51822253

  • 相关阅读:
    xdoj 1237 (贪心+逆向思维)
    linux系统 (实验一)实验楼的课程笔记
    fc_net.py cs231n
    cnn.py cs231n
    optim.py cs231n
    layers.py cs231n
    Python数据分析与展示[第一周]
    配置了两天python【python可以的】
    PYTHON网络爬虫与信息提取[scrapy框架应用](单元十、十一)
    PYTHON网络爬虫与信息提取[正则表达式的使用](单元七)
  • 原文地址:https://www.cnblogs.com/xmanblue/p/6178143.html
Copyright © 2011-2022 走看看