一、单机安装步骤记录:
1、yum install wget
2、cd ~
3、mkdir /data/software(可创建其他目录)
4、cd /data/software
5、wget https://download.redis.io/releases/redis-6.2.6.tar.gz
6、tar xf redis-6.2.6.tar.gz
7、cd redis-6.2.6
8、vi README.md(查看README提供具体安装方法)
9、make
---yum install gcc
---make distclean
10、make
11、cd src
--- 可以看到生成了可执行程序
12、cd ..
13、指定安装路径(一般放在/usr/local/redis)
make install PREFIX=/usr/local/redis
启动测试:cd /usr/local/redis/bin
./redis-server(此时只是控制台启动,不是后台启动)
14、把源文件配置文件复制到/usr/local/redis/bin
cp /data/software/redis-6.2.6/redis.conf /usr/local/redis/bin
cd /usr/local/redis/bin
vi redis.conf修改配置文件属性daemonize
daemonize no -> daemonize yes
后台启动测试:./redis-server redis.conf
开启远程连接:找到bind 127.0.0.1 -::1,并注释掉
启用密码: 找到# requirepass foobared,把注释去掉foobared修改为自己的密码
requirepass 123456
15、vi /etc/profile(配置redis环境变量)
export REDIS_HOME=/usr/local/redis
export PATH=$PATH:$REDIS_HOME/bin
16、cd utils
17、./install_server.sh (可执行一次或多次)
a)、一个物理机中可以有多个redis实例(进程),通过port区分
b)、可执行程序就一份在目录,但是内存中未来的多个实例需要各自的配置文件,持久化目录等资源
c)、service redis_6379 start/stop/status > linux init.d(会出现实例启动文件)
d)、脚本会帮助启动
18、查看redis进程
ps -fe|grep redis
二、集成布隆过滤器
1、访问redis.io
2、module集成
3、访问RedisBloom的github
https://github.com/RedisBloom/RedisBloom/archive/refs/heads/master.zip
4、linux中wget master.zip
5、yum install unzip
6、unzip master.zip
7、make
8、cp bloom.so /usr/local/redis/
9、redis-server --loadmodule /usr/local/redis/redisbloom.so
10、redis-cli
11、bf.add ooxx abc(往布隆过滤器添加值)
bf.exits abc(判断值是否存在)
bf.exits cde
12、cf.add #布谷鸟过滤器
三、主从复制集群搭建
1、主从规划,首先准备三个redis实例,例如端口号6380、6381、6382,操作都在一台虚拟机上进行
1)、进入redis源文件件夹utils文件夹,执行./install_server.sh创建三redis实例
cd /data/software/redis-6.2.6/utils
# 创建其他redis实例(输入实例的端口号、配置文件放置地址、数据持久化地址)
./install_server.sh
# 配置文件放置在/data/software/test,分别为6380.conf,6381.conf,6382.conf
2)redis实例创建好后,修改配置文件设置,关闭后台执行,方便查看主从复制结果
vim /data/software/test/6380.conf
# 找到 daemonize,设置成no
daemonize no
3)修改完配置需要重新启动三个redis节点,这里规定6382为主节点6380、6381分别都为从节点
# 主节点启动
redis-server /data/software/test/6382.conf
# 从节点启动,启动时配置跟随主节点
redis-server /data/software/test/6380.conf --replicof 127.0.0.1 6382
redis-server /data/software/test/6381.conf --replicof 127.0.0.1 6382
这样主从复制节点都启动了,主节点可以独写,从节点只能进行读
4)若主节点挂掉,需要重新切换主节点,假设6382宕机,我们把6380设置为主节点(当从节点变为主节点,别的从节点不会自动切换主节点,需要完全手动)
# 从节点变成主节点命令 replicaof no one
#实际操作
[root@localhost test]# redis-cli -p 6380
127.0.0.1:6380> replicaof no one
# 把6381指向的主节点切换到6380上(原来指向6382)
redis-cli -p 6281 --replicaof 127.0.0.1 6380
#实际操作
[root@localhost ~]# redis-cli -p 6281 --replicaof 127.0.0.1 6380
# 若6382节点此时重新启动需要指向6380主节点
redis-server ./6382.conf --replicof 127.0.0.1 6380
#实际操作
[root@localhost test]# redis-server ./6382.conf --replicof 127.0.0.1 6380
2、可使用proxy进行屏蔽集群节点:tewemproxy、predixy(性能比较高)
四、哨兵集群创建(方便主从高可用)
1、还是在/data/software/test文件夹下,新建26380.conf 、26381.conf 、26382.conf 哨兵配置文件
配置文件内容:
###########################26380.conf 配置如下 #############################
port 26380
# 监控6380 权重为2,主服务器判断为失效至少需要 2 个 Sentinel 同意
sentinel monitor mymaster 127.0.0.1 6380 2
###########################26381.conf 配置如下 #############################
port 26380
# 监控6380 权重为2,主服务器判断为失效至少需要 2 个 Sentinel 同意
sentinel monitor mymaster 127.0.0.1 6380 2
###########################26382.conf 配置如下 #############################
port 26380
# 监控6380 权重为2,主服务器判断为失效至少需要 2 个 Sentinel 同意
sentinel monitor mymaster 127.0.0.1 6380 2
2、分别启动三个哨兵节点
redis-server /data/software/test/26380.conf --sentinel
redis-server /data/software/test/26381.conf --sentinel
redis-server /data/software/test/26382.conf --sentinel
启动完成,可进行测试,手动把主节点进程停掉,看是否哨兵会自动切换主节点,原来的主节点重新启动,哨兵会自动把它切换成从节点,并且跟随新的主节点
五、集群(cluster)
1、规划集群规模为三主三从,端口号为7001、7002、7003、7004、7006、7006
使用install_server.sh命令,实例化节点,可参考"主从复制"实例化方式,配置文件放在
/data/software/cluster,修改6个节点配置文件
# cluster集群配置,打开集群模式(默认是单机)
cluster-enabled yes
# 设定节点配置文件名
cluster-config-file nodes-7001.conf
# 设定节点失联时间,超过该时间(毫秒),集群自动进行主从切换。
cluster-node-timeout 15000
2、创建集群
# 指定从节点数量: --cluster-replicas 1
redis-cli --cluster create 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 --cluster-replicas 1
注意:集群要求限制必须至少要有3个master,每个从节点配置一个主节点的话,就必须需要6个节点
3、新增主从节点
1、添加主节点(127.0.0.1:7007为新增主节点,127.0.0.1:7000为集群中已存在的节点,可为集群中任一个已存在节点)
redis-cli --cluster add-node 127.0.0.1:7007 127.0.0.1:7001
2、重新分配hash槽位(127.0.0.1:7001为需要转移的master节点)
redis-cli --cluster reshard 127.0.0.1:7001
2.1、输入要转移的槽位(0~16384)
2.2、输入需要接收槽位的master节点Id
2.3、输入需要转移槽位的集群master节点id
2.4、选择分配hash槽的来源,输入all 代表集群槽位平均分配,输入done 代表在指定节点拿出指定数量的hash槽位
3、添加从节点
redis-cli --cluster add-node --cluster-slave --cluster-master-id 3b1bf4b44ec0c67645cc558bbdf1b65a4076b41b 127.0.0.1:7008 127.0.0.1:7007
# cluster-master-id 后边跟 主节点id
# 127.0.0.1:7008 是新加的从节点
# 127.0.0.1:7007 作为从节点的主节点
4、删除主从节点
1、移除从节点
# 从节点ip:端口号
# 从节点id
redis-cli --cluster del-node 127.0.0.1:7008 f95664b318ffd0a52792bff47dd329007bd2953a
2、移除主节点
注意:使用同样的方法移除主节点,不过在移除主节点前,需要确保这个主节点是空的. 如果不是空的,需要将这个节点的数据重新分片到其他主节点上.
替代移除主节点的方法是手动执行故障恢复,被移除的主节点会作为一个从节点存在,不过这种情况下不会减少集群节点的数量,也需要重新分片数据.
2.1 槽位转移
参考第三步槽位重新划分
2.2、删除主节点(同删除从节点命令)
redis-cli --cluster del-node 127.0.0.1:7007 3b1bf4b44ec0c67645cc558bbdf1b65a4076b41b