redis分片java实践
linux安装redishttps://mp.csdn.net/mp_blog/creation/editor/134864302复制redis.conf配置文件成redis1.conf、redis2.conf、redis3.conf
修改redis的端口信息和存pid文件的路径。存pid文件的路径只要不同就行了,没什么特别要求。
指定配置文件启动redis
redis-server redis1.conf
redis-server redis2.conf
redis-server redis3.conf
查看进程,看看启动起来了嘛
ps -ef | grep redis
java整合redis实现分片
public class redisShares {
public static void main(String[] args) {
share();
}
public static void share(){
List<JedisShardInfo> shares=new ArrayList<>();
shares.add(new JedisShardInfo("152.136.167.51",7000));
shares.add(new JedisShardInfo("152.136.167.51",7001));
shares.add(new JedisShardInfo("152.136.167.51",7002));
ShardedJedis jedis = new ShardedJedis(shares);
jedis.setnx("xxx","6666");
System.out.println(jedis.get("xxx"));
}
}
进入不同的redis客户端,可以查到上面存的数据被分开存储了。
redis哨兵机制实现
1.主从节点挂载
在初始的redis环境下:拷贝redis.conf文件
(1)复制三份redis.conf并修改端口分别为7000、7001、7002
(2)修改pid文件的路径
(3) 在存redis.conf配置文件的路径下,启动redis服务
redis-server redis.conf
(4)查看redis启动了吗
ps -ef | grep redis
(5)挂载从节点到主节点上
redis-cli -p 7001
#slaveof 主节点的ip 主结点的端口
slaveof 127.0.0.1 7000
exit
redis-cli -p 7002
slaveof 127.0.0.1 7000
exit
(6)进入主节点客户端查看挂载上了嘛
redis-cli -p 7000
info replication
可以看到另外两个节点已经挂载上去了。
2. 配置哨兵
哨兵是一个单独的进程,用来监控主从节点,做故障转移。
sentinel.conf是哨兵配置的默认配置文件,我们将这个文件复制一份(防止改错)
要设置几个哨兵就复制几份配置文件,完成下面的配置。
修改sentinel.conf
(1)哨兵进程的端口,如果设置多个哨兵,端口要不一致
(2)开启守护进程,运行后台启动,不占用窗口
(3)哨兵的日志文件
(4)设置主节点信息
设置主从结构中的主节点的ip和端口,1代表有1个哨兵认为主节点不可用了就换主节点。
注意:这个ip和上面主从节点挂载使用的ip必须一致,不能一个是服务器ip,一个是127.0.0.1或者localhost
(5)设置心跳时间
当哨兵发出ping后节点多久没有回应就被判定为挂掉了。阈值设置。
(6)配置同步
此配置值在发生故障时,最多可以有几个slave同时对新的master进行同步,这个数字越小完成故障处理的时间越短
(7)关闭保护模式
如果启动保护模式而且没有密码或者没有设置bind,只能接收本机的访问(保护模式是一种保护,但是bind和密码优先级更高)
3.启动哨兵进行
复制sentinel配置文件,修改哨兵端口。启动三个哨兵。
redis-sentinel sentinel1.conf
redis-sentinel sentinel2.conf
redis-sentinel sentinel3.conf
进入哨兵客户端,查看哨兵的信息,可以看到有两个从节点 ,三个哨兵
模拟主节点宕机
我们再次进入哨兵进程查看,发现已经更换主节点
redis-cli -p 27000
INFO sentinel
如果此时将宕机的结点再启动,就可以看到它变成了从节点。
redis集群搭建
1.集群配置文件修改
创建文件夹cluster,创建文件夹7000 7001 7002 7003 7004 7005
复制redis.conf配置文件,到每个文件夹中。
修改7000中的配置文件:
(1)注释掉允许访问的ip地址
(2)关闭保护模式:运行别的主机访问
(3)修改redis启动的客户端端口
(4)开启保护模式,运行后台启动
(5)修改pid文件地址,改到和redis.conf同一个文件夹下就可以
(6)修改持久化文件地址,改到redis.conf所在文件夹
(7)设定内存优化策略
(8)关闭aof模式
(9)开启集群
(10)开启集群配置文件
(11)修改集群超时时间
注意:每个配置文件除了(3)端口(5)(6)路径不同其他都相同。
2.编写启动脚本和关闭脚本
启动
#!/bin/sh
redis-server ./7000/redis.conf &
redis-server ./7001/redis.conf &
redis-server ./7002/redis.conf &
redis-server ./7003/redis.conf &
redis-server ./7004/redis.conf &
redis-server ./7005/redis.conf &
关闭
#!/bin/sh
redis-cli -p 7000 shutdown &
redis-cli -p 7001 shutdown &
redis-cli -p 7002 shutdown &
redis-cli -p 7003 shutdown &
redis-cli -p 7004 shutdown &
redis-cli -p 7005 shutdown &
3.测试集群
启动
sh start.sh
查看集群信息,
redis-cli -p 7000
info replication
可以看到集群创建成功。
结束redis
sh shutdown.sh
可以看到已经结束了