springboot整合redis(单机、主从哨兵、集群)

1、配置

1.1、配置图解
在这里插入图片描述

2、验证

2.1、程序启动

主从模式

在这里插入图片描述

集群模式

在这里插入图片描述

2.2、测试
在这里插入图片描述
2.3、stop-master
在这里插入图片描述
2.4、stop-master-again
在这里插入图片描述
2.5、数据同步
在这里插入图片描述

3、其它事项

3.1、down-after-milliseconds

#master或slave多长时间(默认30秒)不能使用后标记为s_down状态。 sentinel down-after-milliseconds mymaster 3000 (可改为3秒)
redis哨兵sentinel.config中配置,程序无法处理

3.2、failover-timeout mymaster

#若哨兵在配置值内未能完成故障转移操作(默认180000),则任务本次故障转移失败
sentinel failover-timeout mymaster 18000
redis哨兵 sentinel.config中配置,程序无法处理

4、测试controller

@GetMapping(path = "/redisTest", produces = MediaType.APPLICATION_JSON_VALUE)
	public String redisTest() {
		log.info("redisTest - start ");
		// 1> 参数验证
		try {
			Date date = new Date();
			DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
			String aa = df.format(date);
			String key = "key:" + aa;
			redisClient.set("key:" + aa, aa, 100, TimeUnit.SECONDS);
			System.err.println("set success");
			String test = redisClient.get(key);
			System.err.println("get -> " + test);
		}catch (NullPointerException | IllegalArgumentException e) {
			log.error("error : {} . ", e);
			return e.getMessage();
		}catch (Exception e) {
			log.error("error : {} . ", e);
			return e.getMessage();
		}
		log.info("redisTest - end ");

		log.info("lock - check - start . ");
		try {
			RLock lock = redisClient.getLock("test-lock");
			try {
				lock.lock();
				System.err.println("redisLock执行中");
				new Thread(new Runnable() {
					@Override
					public void run() {
						RLock lock = redisClient.getLock("test-lock");
						try {
							lock.lock();
							System.err.println("redisLock2执行中.......");
						} finally {
							if (lock != null) {
								lock.unlock();
							}
							System.err.println("redisLock2执行结束");
						}
					}
				}).start();
				Thread.sleep(1000 * 5);
			} finally {
				if (lock != null) {
					lock.unlock();
				}
				System.err.println("redisLock执行结束");
			}
			Thread.sleep(1000 * 3);
			log.info("lock - check - end . ");
			return "lock";
		}catch (NullPointerException | IllegalArgumentException e) {
			log.error("error : {} . ", e);
			return e.getMessage();
		}catch (Exception e) {
			log.error("error : {} . ", e);
			return e.getMessage();
		}
	}

5、源码

源码包下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小安灬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值