posts - 22, comments - 32, trackbacks - 0, articles - 73
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          spring boot redis 配置

          Posted on 2017-08-07 17:38 為自己代言 閱讀(597) 評論(0)  編輯  收藏 所屬分類: spring cloud 微服務
          1:pom.xml 找自己spring boot 對應的版本
            <!-- redis 配置-->
           <dependency>
           <groupId>redis.clients</groupId>
           <artifactId>jedis</artifactId>
           <version>2.8.1</version>
           </dependency>
           <dependency>
           <groupId>org.springframework.data</groupId>
           <artifactId>spring-data-redis</artifactId>
           <version>1.7.2.RELEASE</version>
           </dependency>
          <!-- end redis 配置-->

          2: 在spring boot   *.properties 配置文件中增加連接配置:
               spring.redis.hostName=127.0.0.1
              spring.redis.port=6379
              spring.redis.password=
              spring.redis.pool.maxActive=8
              spring.redis.pool.maxWait=-1
              spring.redis.pool.maxIdle=8
              spring.redis.pool.minIdle=0
              spring.redis.timeout=0
          3: spring boot 中增加redis 配置連接
                /**
           * Created by Administrator on 2017/2/27.
           
          */
          @Configuration
          @EnableAutoConfiguration
          public class RedisConfig {

              private static Logger logger = LoggerFactory.getLogger(RedisConfig.class);

              @Bean
              @ConfigurationProperties(prefix="spring.redis")
              public JedisPoolConfig getRedisConfig(){
                  JedisPoolConfig config = new JedisPoolConfig();
                  return config;
              }
            @Bean
              @ConfigurationProperties(prefix="spring.redis")
              public RedisConnectionFactory jedisConnectionFactory(){
                  return new JedisConnectionFactory(getRedisConfig());
              }
              @Bean
              public RedisTemplate<String, Object> redisTemplate(){
                  RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
                  //這個緩存key的序列化方式
                  template.setKeySerializer(new StringRedisSerializer());
                  //設置redis 轉換 value 通過jdk序列化方法,GenericJackson2JsonRedisSerializer 這個是json形式
                  template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
                  template.setConnectionFactory(jedisConnectionFactory());
                  return template;
              }

              /**
               * 這個是redis 多值操作返回模版對象。比如:map,set ,list 等
               * 
          @return
               
          */  @Bean
              public ValueOperations<String, Object> valueOperations(){
                  RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>();
                  //這個緩存key的序列化方式
                  redisTemplate.setKeySerializer(new StringRedisSerializer());
                  //這個緩存value的序列化方式,通過有jdk序列化,這個是json 序列化
                  redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
                  redisTemplate.setExposeConnection(true);
                  redisTemplate.setConnectionFactory(jedisConnectionFactory());
                  redisTemplate.afterPropertiesSet();
                  return redisTemplate.opsForValue();
              }
          }
          4: RedisTemplate 使用
             @Service
          public class RedisServiceImpl implements RedisService{
              @Autowired
              private RedisTemplate redisTemplate;
              public boolean expire(final String key, long expire,final TimeUnit unit) {
                  return redisTemplate.expire(key, expire, unit);
              }
              @Override
              public void setList(String key, List<String> list, long expire, TimeUnit unit) throws Exception {
                  redisTemplate.delete(key);
                  redisTemplate.opsForValue().set(key,list,expire,unit);
              }
              public List<String> getList(String key) {
                  return (List<String>)redisTemplate.opsForValue().get(key);
              }
              public void remove(String key){
                  redisTemplate.delete(key);
              }
              @Override
              public void setKey(String key, String s, long expire, TimeUnit unit) {
                  redisTemplate.opsForValue().set(key,s,expire,unit);
              }
              
              @Override
              public String getKey(String key) {
                  return (String) redisTemplate.opsForValue().get(key);
              }
              @Override
              public Object getKeyForObject(String key) {
                  return redisTemplate.opsForValue().get(key);
              }
              @Override
              public void setMap(String key, Map<String, Object> map, long expire, TimeUnit unit) throws Exception {
                  this.expire(key,expire,unit);
                  redisTemplate.opsForHash().putAll(key,map);
              }
                @Override
              public void removeKeyForMap(String key, String mapKey) {
                  redisTemplate.opsForHash().delete(key,mapKey);
              }
              @Override
              public void putMapKey(String key, String mapKey, String mapValue) {
                  redisTemplate.opsForHash().put(key,mapKey,mapValue);
              }
              public Set<String> keys(String o ){
                  return redisTemplate.keys(o);
              }
          }

          5:單元測試類

          RunWith(SpringRunner.class)
          @SpringBootTest(classes = MyApplication.class)// 指定spring-boot的啟動類
          //相當于  --spring.profiles.active=dev
          @ActiveProfiles(value = "dev")
          public class RedisCacheTest {
              protected final Logger logger = Logger.getLogger(this.getClass());
              @Autowired
              private RedisService redisService;
              @Autowired
              private RedisTemplate redisTemplate;
              @Test
              public void CacheTest() throws Exception {
                  redisService.setKey("111111","222222",100, TimeUnit.SECONDS);
                  redisService.getKey("111111");
              }
              @Test
              public void SaveObjectForCacheTest()throws Exception{
                  TargetDB targetDB=new TargetDB();
                  targetDB.setDbType("111");
                  targetDB.setPort("22");
                  targetDB.setUserName("zzzlyr");
                  redisTemplate.opsForValue().set("key111",targetDB);
                  TargetDB targetDB12= (TargetDB) redisTemplate.opsForValue().get("key111");
                  System.out.println(targetDB12.toString());
              }
                @Test
              public void SaveMapForCacheTest()throws Exception {
                  TargetDB targetDB = new TargetDB();
                  targetDB.setDbType("111");
                  targetDB.setPort("22");
                  targetDB.setUserName("zzzlyr");
                  List<TargetDB> list = new LinkedList<TargetDB>();
                  list.add(targetDB);
                  Map<String, List<TargetDB>> map = new LinkedHashMap<String, List<TargetDB>>();
                  map.put("111111111111", list);
                  //向緩存中放入map
                  redisTemplate.opsForHash().putAll("zzzzz", map);
                  //從緩存中獲取map
                  Map<String, List<TargetDB>> cacheMap = redisTemplate.opsForHash().entries("zzzzz");
                  //Map<String,List<String>> cacheMap= (Map<String, List<String>>) redisTemplate.opsForValue().get("platform-app_AppOperation");
                  System.out.println(cacheMap.toString());
              }
          }
          主站蜘蛛池模板: 雷山县| 南郑县| 肃北| 无锡市| 桦甸市| 宜君县| 石柱| 抚远县| 海南省| 嫩江县| 泰和县| 甘泉县| 黑山县| 夏津县| 惠东县| 靖远县| 新民市| 如皋市| 崇文区| 灵武市| 星座| 武功县| 益阳市| 五寨县| 松潘县| 莒南县| 安西县| 崇仁县| 庄浪县| 黑河市| 潼南县| 望都县| 夏邑县| 措勤县| 康保县| 昔阳县| 邵阳市| 湛江市| 南华县| 漯河市| 舒城县|