zoukankan      html  css  js  c++  java
  • Spring Boot系列教程十:Spring boot集成Sentinel Redis

    前言

    上一篇文章介绍了spring boot集成单点的redis,然而实际生产环境使用单点的redis风险很高,一旦宕机整个服务将无法使用,这篇文章介绍如何使用基于sentinel的redis高可用方案。
    哨兵sentinel的地址如下:
    192.168.12.194:26379
    192.168.12.194:36379
    192.168.12.194:46379
     
    Redis的地址如下:
    192.168.12.194:6379
    192.168.12.194:6380
    192.168.12.194:6381
     

    实现:

    properties配置文件中添加配置信息:
     1 spring.redis.database=0
     2 spring.redis.password=123456
     3 
     4 # pool settings ...池配置  
     5 spring.redis.pool.max-idle=8  
     6 spring.redis.pool.min-idle=0  
     7 spring.redis.pool.max-active=8  
     8 spring.redis.pool.max-wait=-1 
     9 
    10 #哨兵监听redis server名称
    11 spring.redis.sentinel.master=mymaster
    12 #哨兵的配置列表
    13 spring.redis.sentinel.nodes=192.168.12.194:26379,192.168.12.194:36379,192.168.12.194:46379

    创建RedisComponent类

     1 package com.woniu.RedisComponent;
     2 
     3 import java.io.UnsupportedEncodingException;
     4 
     5 import org.springframework.beans.factory.annotation.Autowired;
     6 import org.springframework.data.redis.core.RedisTemplate;
     7 import org.springframework.data.redis.core.StringRedisTemplate;
     8 import org.springframework.data.redis.core.ValueOperations;
     9 import org.springframework.stereotype.Component;
    10 import org.springframework.stereotype.Service;
    11 
    12 import com.woniu.bean.User;
    13 
    14 
    15 @Component
    16 public class RedisComponent {
    17     
    18     @Autowired
    19     //操作字符串的template,StringRedisTemplate是RedisTemplate的一个子集
    20     private StringRedisTemplate stringRedisTemplate;
    21     
    22     @Autowired
    23     // RedisTemplate,可以进行所有的操作  
    24     private RedisTemplate<Object,Object> redisTemplate;
    25     
    26     public void set(String key, String value){
    27         ValueOperations<String, String> ops = this.stringRedisTemplate.opsForValue();
    28         boolean bExistent = this.stringRedisTemplate.hasKey(key);
    29         if (bExistent) {
    30             System.out.println("this key is bExistent!");
    31         }else{
    32             ops.set(key, value);
    33         }
    34     }
    35     
    36     public String get(String key){
    37         return this.stringRedisTemplate.opsForValue().get(key);
    38     }
    39     
    40     public void del(String key){
    41         this.stringRedisTemplate.delete(key);
    42     }
    43     
    44     public void sentinelSet(User user){
    45         String key = null;
    46         try {
    47             key = new String(user.getId().getBytes("gbk"),"utf-8");
    48         } catch (UnsupportedEncodingException e) {
    49             // TODO Auto-generated catch block
    50             e.printStackTrace();
    51         }
    52 
    53         System.out.println(key);
    54         redisTemplate.opsForValue().set(key, user.toString());
    55     }
    56     
    57     public String sentinelGet(String key){
    58         return stringRedisTemplate.opsForValue().get(key);
    59     }
    60 }
    添加测试类的测试代码
     
     1 package com.woniu;
     2 
     3 import org.junit.Test;
     4 import org.junit.runner.RunWith;
     5 import org.springframework.beans.factory.annotation.Autowired;
     6 import org.springframework.boot.test.context.SpringBootTest;
     7 import org.springframework.test.context.junit4.SpringRunner;
     8 
     9 import com.woniu.RedisComponent.RedisComponent;
    10 import com.woniu.bean.User;
    11 
    12 @RunWith(SpringRunner.class)
    13 @SpringBootTest
    14 public class SpringbootSentinelredisApplicationTests {
    15 
    16     @Autowired
    17     private RedisComponent redisComponet;
    18     
    19     @Test
    20     public void sentinelSet(){
    21         User user = new User();
    22         user.setId("001");
    23         user.setAge("30");
    24         user.setName("wangpengfei");
    25         
    26         redisComponet.sentinelSet(user);
    27     }
    28 
    29     @Test
    30     public void sentinelGet(){
    31         String str = redisComponet.sentinelGet("001");
    32         System.out.println(str);
    33     }
    34 }
     
  • 相关阅读:
    蚂蚁森林自动收能量
    え速记
    い 速记
    あ速记
    五十音图
    Leetcode 215. 数组中的第K个最大元素 排序 优先队列
    动手学深度学习 | 第二部分完结竞赛:图片分类 | 29
    动手学深度学习 | 残差网络 ResNet | 27
    动手学深度学习 | 批量归一化 | 26
    动手学深度学习 | 含并行连结的网络GoogLeNet/Inception V3 | 25
  • 原文地址:https://www.cnblogs.com/wdpnodecodes/p/7406976.html
Copyright © 2011-2022 走看看