第一部分 Spring整合Redis
一、准备工作
二、入门案例1
masterName主机名: mymaster
sentinel: ip:端口号
import redis.clients.jedis.JedisSentinelPool;
public class TestSentinel {
@Test
public void testSentinel1() {
String masterName = "mymaster";//主机名
Set<String> sentinels = new HashSet<>();//哨兵类型
sentinels.add("192.168.126.166:26379"); //添加哨兵主机名端口号
// sentinels.add("192.168.126.166:26380");
// sentinels.add("192.168.126.166:26381");
// sentinels.add("192.168.126.166:26382");
// 获取哨兵连接 主机名 哨兵IP:端口号
JedisSentinelPool sentinelPool = new JedisSentinelPool(masterName, sentinels);
// 哨兵设定资源
Jedis jedis = sentinelPool.getResource();
jedis.set("commandOne", "commandOne哨兵jedis发来贺电");
// 输出哨兵资源
System.out.println("获取资源:"+jedis.get("commandOne"));
// 将连接池带着jedis的连接返还给资源
sentinelPool.returnResource(jedis);
}
}
三、入门案例2
1、编辑Pro文件
#redis.host=192.168.126.166
#redis.port.a=6379
#redis.port.b=6380
#redis.port.c=6381
redis.maxTotal=10000
redis.sentinel=192.168.126.166:26379
redis.masterName=mymaster
2、编辑application-redis配置文件,注释掉单台redis、分片redis配置
<!-- 构造注入, sentinels属性对应set集合,要使用set标签 -->
<bean id="jedisSentinelPool"
class="redis.clients.jedis.JedisSentinelPool">
<constructor-arg name="masterName"
value="${redis.masterName}" />
<constructor-arg name="sentinels">
<set>
<value>${redis.sentinels}</value>
</set>
</constructor-arg>
<constructor-arg name="poolConfig" ref="poolConfig" />
</bean>
<!-- 定义池对象 -->
<bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
<property name="maxTotal" value="${redis.maxTotal}" />
</bean>
3、修改common项目下的RedisService,把分片使用的内容注释掉
@Service
public class RedisService {
// 使用redis哨兵
@Autowired(required=false)
private JedisSentinelPool jedisSentinelPool;
public void set(String key,String value) {
Jedis jedis = jedisSentinelPool.getResource();
jedis.set(key, value);
jedisSentinelPool.returnResource(jedis);
}