架构图:
redis安装: #redis端口6379. 路径:/usr/local/src/
编译redis-cli,在redis目录下执行命令:make
安装redis-cli,在redis目录下执行命令:make install
yum -y install gcc automake autoconf libtool make
yum -y install gcc gcc-c++
一、redis.conf配置文件基本修改:
1、取消本机绑定
# bind 127.0.0.1
2、关闭保护模式
protected-mode no
3、开启后台运行
daemonize yes
4、修改密码
requirepass 密码
5.配置日志文件
logfile "/home/redis/logs/redis.log"
PS:启动redis #关闭redis
redis-server redis.conf kill -9 7643
redis-server & redis-cli shutdown
二、redis.conf持久化策略:
RDB配置:
1、修改rdb配置文件名称
dbfilename dump.rdb
2、配置持久化文件的路径 #不一定是rdb方式,如果设定了aof方式,路径也在这里配置
dir ./
3.RDB的备份策略
save 900 1 当15分钟内,set操作执行1次时备份1次
save 300 10 当5分钟内,set操作执行10次备份1次
save 60 10000 当1分钟内,set操作执行10000次时备份1次
AOF配置:
1、开启AOF模式
appendonly yes #默认是no,所以默认是RDB方式。改成yes后RDB方式不再生效
2、修改aof配置文件名称
appendfilename “appendonly.aof”
3.AOF的备份策略
appendfsync always 如果执行set操作则持久化一次
appendfsync everysec 每秒持久化一次(默认)
appendfsync no 不做处理
三、redis.conf内存策略
1、指定redis内存类型
#maxmemory<bytes>
2、设定内存策略
maxmemory-policy allkeys-lru
#其他的内存策略说明
volatile-lru -> 在设定了超时时间的数据中,查找最近最少使用的数据进行删除
allkeys-lru -> 在所有的key中查询最近最少使用的数据进行删除
volatile-random -> 在设定了超时时间的数据中随机进行删除.
allkeys-random -> 在所有的key中进行随机的删除
volatile-ttl -> 删除最接近超时时间的数据
noeviction ->不做删除处理.只是返回报错信息.
默认使用是第6种,一般最合理用allkeys-lru
四、redis默认内存大小
原则:如果需要设定redis的最大的内存.则一般是物理内存的3/4
五、redis.conf读写分离
#redis主从结构默认读写分离
replica-read-only yes
分片:
架构图:
1、redis目录下新建shards文件夹后把配置文件复制进去:
cp redis.conf shards/redis-6379.conf
cp redis.conf shards/redis-6380.conf
cp redis.conf shards/redis-6381.conf
2、在新的两个redis配置文件中修改成各自的端口: #因为原来的redis.conf端口就是6379,所以不用修改redis-6379.conf
port 6380
port 6381
3、在shards目录下启动多台redis:
shards]# redis-server redis-6379.conf
shards]# redis-server redis-6380.conf
shards]# redis-server redis-6381.conf
#可用ps -ef|grep redis 查看进程
#进入客户端:redis-cli -p 端口号
#关闭服务:redis-cli -p 端口号 shutdown
哨兵:
1、在新的两台不同redis配置文件中修改端口:
port 6380
port 6381
和
masterauth 主机密码
分别修改持久化文件名称: #6379也要修改,因为为了启动生成的appendonly-xxxx.aof统一好看
appendfilename “appendonly-6379.aof”
appendfilename “appendonly-6380.aof”
appendfilename “appendonly-6381.aof”
在sentinel目录下启动多台redis:
sentinel]# redis-server redis-6379.conf
sentinel]# redis-server redis-6380.conf
sentinel]# redis-server redis-6381.conf
实现主从:
1、登陆从机:redis-cli -h 127.0.0.1 -p 6380 -a 123456
#未设置密码本地登陆:redis-cli -p 6380
#远程登陆(需要也安装有redis):redis-cli -h 192.168.0.211 -p 6380 -a 123456"
2、主从挂载:6380>SLAVEOF 192.168.0.211 6379
#如果本机无密码登陆,远程挂载时会报错,输入:auth 密码
#6381也一样设置 #取消主从:slaveof no one
#弄完登陆6379查看主机状态info replication,看是否有两个从机在下面了
哨兵搭建:
一、把redis根目录下的sentinel.conf复制到已经新建的sentinel目录下
cp sentinel.conf sentinel/sentinel-6379.conf
二、编辑sentinel-6379.conf:
1、去掉注释,关闭保护模式
protected-mode no
2、开启后台运行,no改为yes
#redis5.0以下的版本默认没有这个配置,只需要把它加上就行
daemonize yes
3、配置哨兵监听的主机ip和推选票数
sentinel monitor mymaster 127.0.0.1 6379 1
4、配置连接主机密码
sentinel auth-pass mymaster 主机密码
5、配置当主机宕机后开始推选时间10秒
sentinel down-after-milliseconds mymaster 10000
6、配置推选失败的超时时间10秒
sentinel failover-timeout mymaster 10000
三、启动哨兵:
sentinel]# redis-sentinel sentinel-6379.conf
四、测试:
1.将主机6379宕机后,检测哨兵是否推选新的主机
2.将主机6379重启后,看6379是否成挂载到推选的新主机下成为从机
多哨兵: #一般要设置奇数台哨兵,因为2台或者双数台哨兵可能会出现平票情况
一、编辑sentinel-6379.conf
1.121行修改推选主机的票数为2
sentinel monitor mymaster 192.168.0.211 6380 2
二、sentinel-6379.conf复制两份:
cp sentinel-6379.conf sentinel-6380.conf
cp sentinel-6379.conf sentinel-6381.conf
三、在新的两个哨兵配置文件中分别修改成各自的端口和序列号:
21行 port 26380
21行 port 26381
第84行修改序列号:
随便改,只要3个哨兵配置文件序列号不同就可以
四、测试:
1.分别启动3台哨兵,再关闭主机,检测哨兵是否正确推选主机
2.启动旧主机,检测主机是否挂载到推选的新主机下成为从机
集群:
#3个片区,一个片区为一主二从
#redis5.0以下版本的集群需要提前安装好ruby语言环境,因为集群工具redis-trib.rb是ruby语言写的。参考安装链接:
https://blog.youkuaiyun.com/lsxf_xin/article/details/79442198
所以避免麻烦,请与本文一致使用redis5.0+版本
一、在redis目录下创建cluster文件夹,下面创建9个文件夹,命名为7000-7008
cp redis.conf cluster/7000/redis.conf
#这时先执行第二步,再复制。
cp redis.conf ../7001/redis.conf
cp redis.conf ../7002/redis.conf
cp redis.conf ../7003/redis.conf
cp redis.conf ../7004/redis.conf
cp redis.conf ../7005/redis.conf
cp redis.conf ../7006/redis.conf
cp redis.conf ../7007/redis.conf
cp redis.conf ../7008/redis.conf
二、在每一个redis.cnf里修改配置:
1、69行取消本机绑定
# bind 127.0.0.1 #加#注释掉
2、88行关闭保护模式
protected-mode no #yes改为no
3、84行修改端口号
port 7000
4、136行开启后台运行
daemonize yes #no改为yes
5、158行修改PID绝对路径
pidfile /usr/local/src/redis/cluster/7000/redis-7000.pid
6、263行配置持久化文件的路径
dir /usr/local/src/redis/cluster/7000/ #不一定是rdb方式,如果设定了aof方式,路径也在这里配置
7、597行修改内存策略
maxmemory-policy allkeys-lru
8、699行开启aof持久化策略
appendonly yes #默认是no,所以默认是RDB方式。改成yes后RDB方式不再生效
703行修改aof配置文件名称
appendfilename “appendonly.aof”
9、832行开启redis集群开关
cluster-enabled yes
10、840行启动集群配置
cluster-config-file nodes-7000.conf
11、846行配置超时时间15秒
cluster-node-timeout 15000
#小技巧:把7000的redis.conf修改好后,复制到其他目录下,再修改其中的内容;
命令模式下用 :%s/7000/7001/g 可以批量修改配置,这里意思是把7000批量改为7001
三、启动集群
1、创建批量启动的shell脚本
touch start.sh
编辑start.sh
#!/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 &
redis-server 7006/redis.conf &
redis-server 7007/redis.conf &
redis-server 7008/redis.conf &
启动命令:sh start.sh
2、在redis目录下执行集群命令:
redis-cli --cluster create 127.0.0.1:7000 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 127.0.0.1:7007 127.0.0.1:7008 --cluster-replicas 2
#若是redis5.0以下版本,在安装好ruby环境后,执行:
./src/redis-trib.rb create --replicas 2 127.0.0.1:7000 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 127.0.0.1:7007 127.0.0.1:7008
#replicas 2表示一个主节点底下有2个从节点
3、测试集群:
1.将集群中的主节点关闭,检测是否推选主机;
2.输入数据时,redis中的数据是否有hash一致性的要求;