Redis集群配置与应用
1. Redis集群搭建
- 集群搭建计划
主从划分:3台主机 3台从机共6台 端口划分7000-7005
- 准备集群文件夹:在
/usr/local/src/redis/
中mkdir cluster
,在cluster中创建:mkdir 7000 7001 7002 7003 7004 7005
- 复制配置文件到集群文件夹:
cd /usr/local/src/redis
中:cp redis.conf cluster/7000/
- 编辑配置文件:
1) 注释本地绑定IP地址
2)关闭保护模式
3)修改端口号
4)启动后台启动
5)修改端口号
6)修改持久化文件路径
7)设定内存优化策略
8) 关闭AOF模式
9)开启集群配置
10)开启集群配置文件
11)修改集群超时时间
- 复制文件到其它集群文件夹中:
cp 7000/redis.conf 7001/
- 批量修改
分别将7001-7005文件中的7000改为对应的端口号的名称,进入到对应文件夹直接输入如下命令
- 通过脚本编辑启动/关闭指令:在cluster文件夹中创建:
vim start.sh
创建:vim shutdown.sh
- 启动节点:
sh start.sh
- 创建Redis集群
redis-cli --cluster create --cluster-replicas 2 192.168.211.130:7000 192.168.211.130:7001 192.168.211.130:7002 192.168.211.130:7003 192.168.211.130:7004 192.168.211.130:7005
2. Redis hash槽存储数据原理
RedisCluster采用此分区,所有的键根据哈希函数(CRC16[key]&16383)映射到0-16384槽内,共16384个槽位,每个节点维护部分槽及槽所映射的键值数据.根据主节点的个数,均衡划分区间.
3. SpringBoot整合Redis集群
3.1 入门案例
public class TestSentinel {
@Test
public void testSentinel() {
Set<String> sentinel = new HashSet<String>();
sentinel.add("192.168.211.130:26379");
JedisSentinelPool sentinelPool = new JedisSentinelPool("mymaster", sentinel);
Jedis jedis = sentinelPool.getResource();
jedis.set("sentinel", "哨兵搭建完成!");
System.out.println(jedis.get("sentinel"));
}
}
3.2 编辑RedisConfig
文件
@Value("${redis.nodes}")
private String nodes;
@Bean
public JedisCluster jedisCluster() {
Set<HostAndPort> setNodes = new HashSet<>();
String[] strNode = nodes.split(",");
for(String node : strNode) {
String host = node.split(":")[0];
int port = Integer.parseInt(node.split(":")[1]);
setNodes.add(new HostAndPort(host, port));
}
return new JedisCluster(setNodes);
}
3.3 编辑redis.properties
配置文件
redis.nodes=192.168.211.130:7000,192.168.211.130:7001,192.168.211.130:7002,192.168.211.130:7003,192.168.211.130:7004,192.168.211.130:7005
3.4 编辑CacheAspect
类
// @Autowired(required = false)
// private Jedis jedis;
// @Autowired(required = false)
// private ShardedJedis jedis;
@Autowired(required = false)
private JedisCluster jedis;
3.5 启动测试
关闭防火墙:systemctl stop firewalld
启动cluster,进入到cluster目录:sh start.sh
启动jt-manage,浏览器访问:localhost:8090