Spring Boot系列教程十三:Spring boot集成Sentinel Redis
2018-03-22 10:17
956 查看
前言
上一篇文章介绍了spring boot集成单点的redis,然而实际生产环境使用单点的redis风险很高,一旦宕机整个服务将无法使用,这篇文章介绍如何使用基于sentinel的redis高可用方案。哨兵sentinel的地址如下:192.168.12.194:26379192.168.12.194:36379192.168.12.194:46379Redis的地址如下:192.168.12.194:6379192.168.12.194:6380192.16
4000
8.12.194:6381
实现:
properties配置文件中添加配置信息:[html] view plain copyspring.redis.database=0
spring.redis.password=123456
# pool settings ...池配置
spring.redis.pool.max-idle=8
spring.redis.pool.min-idle=0
spring.redis.pool.max-active=8
spring.redis.pool.max-wait=-1
#哨兵监听redis server名称
spring.redis.sentinel.master=mymaster
#哨兵的配置列表
spring.redis.sentinel.nodes=192.168.12.194:26379,192.168.12.194:36379,192.168.12.194:46379
创建RedisComponent类[html] view plain copypackage com.woniu.RedisComponent;
import java.io.UnsupportedEncodingException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
12fc2
import com.woniu.bean.User;
@Component
public class RedisComponent {
@Autowired
//操作字符串的template,StringRedisTemplate是RedisTemplate的一个子集
private StringRedisTemplate stringRedisTemplate;
@Autowired
// RedisTemplate,可以进行所有的操作
private RedisTemplate<Object,Object> redisTemplate;
public void set(String key, String value){
ValueOperations<String, String> ops = this.stringRedisTemplate.opsForValue();
boolean bExistent = this.stringRedisTemplate.hasKey(key);
if (bExistent) {
System.out.println("this key is bExistent!");
}else{
ops.set(key, value);
}
}
public String get(String key){
return this.stringRedisTemplate.opsForValue().get(key);
}
public void del(String key){
this.stringRedisTemplate.delete(key);
}
public void sentinelSet(User user){
String key = null;
try {
key = new String(user.getId().getBytes("gbk"),"utf-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(key);
redisTemplate.opsForValue().set(key, user.toString());
}
public String sentinelGet(String key){
return stringRedisTemplate.opsForValue().get(key);
}
}
添加测试类的测试代码
[html] view plain copypackage com.woniu;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import com.woniu.RedisComponent.RedisComponent;
import com.woniu.bean.User;
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringbootSentinelredisApplicationTests {
@Autowired
private RedisComponent redisComponet;
@Test
public void sentinelSet(){
User user = new User();
user.setId("001");
user.setAge("30");
user.setName("wangpengfei");
redisComponet.sentinelSet(user);
}
@Test
public void sentinelGet(){
String str = redisComponet.sentinelGet("001");
System.out.println(str);
}
}
工程springboot_sentinelredis源码下载地址:点击打开链接
相关文章推荐
- springBoot系列教程05:fastjson的集成、配置及使用
- Spring Boot系列教程七:Spring boot集成MyBatis
- springBoot系列教程03:redis的集成及使用
- Spring Boot系列教程十:Spring boot集成MyBatis
- Spring Boot系列教程十:Spring boot集成MyBatis
- Spring Boot系列教程十三:Spring boot集成Sentinel Redis
- SpringBoot非官方教程 | 第二十一篇: springboot集成JMS
- Spring Boot系列教程三:使用devtools实现热部署
- Springboot系列:Springboot与Thymeleaf模板引擎整合基础教程(附源码)
- springboot系列教程(八)——整合thymeleaf、freemarker
- Springboot系列:Springboot与Thymeleaf模板引擎整合基础教程(附源码)
- Spring Boot gradle 集成servlet/jsp 教程及示例
- Springboot SpringCloud集成OAuth2入门详细教程
- SpringBoot学习教程 - 05 - 集成Druid
- Spring Boot 系列(九)数据层-集成Spring-data-jpa
- Springboot系列:Springboot与Thymeleaf模板引擎整合基础教程(附源码)
- Springboot系列:Springboot与Thymeleaf模板引擎整合基础教程(附源码)
- Springboot系列:Springboot与Thymeleaf模板引擎整合基础教程(附源码)
- Springboot微服务开发教程系列:开发入门
- 企业级 SpringBoot 教程 (十二)springboot集成apidoc