eighth_redis进阶
1.订阅subscribe
# 小试牛刀 # 打开3个redis-cli,响应简称为响应2和3,发出简称为发出1 subscribe qishi2 # 响应2 subscribe qishi3 # 响应3 publish qishi2 11111 # 语句 连接者 内容 发出1 # 第二种方式 多个响应 psubscribe *zhibo # 响应2 psubscribe *zhibo # 响应3 publish xiongmaozhibo 11111 # 语句 连接者 内容 发出1
2.redis持久化RDB与AOF
# RDB,在opt下redis_conf编辑redis-6379.conf添加以下内容 port 6379 daemonize yes dir /data/6379 # 定义持久化文件存储位置 pidfile /data/6379/redis.pid # redis进程pid文件 loglevel notice # 日志级别 logfile "/data/6379/redis.log" # redis日志log文件 protected-mode yes # 保护模式 dbfilename dbmp.rdb # rdb持久化文件 #bind 10.0.0.10 127.0.0.1 # redis绑定地址 #requirepass redhat # redis登录密码 save 900 1 # rdb机制 每900秒 有1个修改记录 save 300 10 # 每300秒 10个修改记录 save 60 10000 # 每60秒内 10000修改记录 # 并重启redis,登陆redis 设置一个key,即 set # 在看/data/6379底下有没有dbmp.rdb文件 # sava 可以触发持久化,将数据写入RDB文件 127.0.0.1:6379> set age 18 OK 127.0.0.1:6379> save OK
# AOF,给redis-6379.conf文件添加以下两条参数 appendonly yes appendfsync always # 总是修改类的操作 everysec # 每秒做一次持久化,一般用这个 no # 依赖于系统自带的缓存大小机制 # 重启redis服务 # 检查redis数据目录/data/6379/是否有aof文件 # 登陆redis-cli,写入数据实收检查aof文件信息 tail -f appendonly.aof # 设置新key,检查aof信息,关闭redis检查是否持久化
3.redis主从同步
# 准备三个redis数据库配置文件,一主两从 # cd /opt/redis_conf # vim redis-6380.conf写入以下配置 port 6380 # 端口 daemonize yes # 状态 pidfile /data/6380/redis.pid # 存放文件 loglevel notice # 日志级别 logfile "/data/6380/redis.log" # 日志文件 dbfilename dump.rdb dir /data/6380 # 文件地址 protected-mode no # 守护
# 然后sed 创建配置文件6381和6382 sed "s/6380/6381/g" redis-6380.conf > redis-6381.conf sed "s/6380/6382/g" redis-6380.conf > redis-6382.conf # 创建数据文件目录 mkdir -p /data/6380 mkdir -p /data/6381 mkdir -p /data/6382 # 启动redis数据库(之前配置时关闭了) [root@qishi666 redis_conf]# redis-server redis-6380.conf [root@qishi666 redis_conf]# redis-server redis-6381.conf [root@qishi666 redis_conf]# redis-server redis-6382.conf # 此时可以新建key值确保3个数据库是独立的
# 然后给两个从服务器配置文件再添加一行配置 在6381和6382配置文件添加这一行配置,表示指定主服务器为6380 slaveof 127.0.0.1 6380 # 重启数据库 pkill redis redis-server /opt/redis_conf/redis-6380.conf redis-server /opt/redis_conf/redis-6381.conf redis-server /opt/redis_conf/redis-6382.conf # 查看主从数据库状态 redis-cli -p 6380 info redis-cli -p 6380 info replication # 主库添加数据做测试
# 手动进行主从复制故障切换 # 关闭6381的从库身份 redis-cli -p 6381 info replication slaveof no one # 将6382设为6381的从库 # 6382连接到6381: [root@db03 ~]# redis-cli -p 6382 127.0.0.1:6382> SLAVEOF no one 127.0.0.1:6382> SLAVEOF 127.0.0.1 6381
4.redis哨兵:监控redis是否良好运行,可以自动切换主从
# 配置三个redis数据库, 一主两从 redis-6380.conf redis-6381.conf redis-6382.conf # 启动三个redis数据库,确保主从复制正常运行 redis-server redis-6380.conf redis-server redis-6381.conf redis-server redis-6382.conf redis-cli -p 6380 info replication redis-cli -p 6381 info replication redis-cli -p 6382 info replication # 配置三个哨兵 # cd /opt/redis_conf vim redis-26380.conf vim redis-26381.conf vim redis-26382.conf # 写入以下配置文件 port 26379 dir /var/redis/data/ # 存放地址 logfile "26380.log" # 哨兵名字 sentinel monitor mymaster 127.0.0.1 6380 2 # mymaster是名字 ,另外是端口 sentinel down-after-milliseconds mymaster 30000 sentinel parallel-syncs mymaster 1 sentinel failover-timeout mymaster 180000 daemonize yes # 如果是在三个不同的机器上,只能用机器对外访问的IP,那就需要添加这一个配置 sentinel announce-ip 127.0.0.1 # 启动三个哨兵 redis-26380.conf redis-26381.conf redis-26382.conf # redis-cli -p 26380 info sentinel 查看哨兵情况,slaves应等于2,sentinels=3 # 如果以上信息出错则需要全部重来,因为系统会配置额外路径,仅部分重来还是报错
5.redis集群:分布处理
# 准备六个节点 cd /opt/jq vim redis-7000.conf # 写入配置 port 7000 daemonize yes dir "/opt/redis/data" logfile "7000.log" dbfilename "dump-7000.rdb" cluster-enabled yes cluster-config-file nodes-7000.conf # 这6个节点配置文件都一样,仅仅是端口的不同 sed "s/7000/7001/g" redis-7000.conf > redis-7001.conf sed "s/7000/7002/g" redis-7000.conf > redis-7002.conf sed "s/7000/7003/g" redis-7000.conf > redis-7003.conf sed "s/7000/7004/g" redis-7000.conf > redis-7004.conf sed "s/7000/7005/g" redis-7000.conf > redis-7005.conf # 启动这六个节点 # cd /opt/jq redis-server redis-7000.conf redis-server redis-7001.conf redis-server redis-7002.conf redis-server redis-7003.conf redis-server redis-7004.conf redis-server redis-7005.conf # 分配哈希槽,准备各种环境 # ruby-2.3.1.tar.gz 的安装,redis-3.3.0.gem的安装,ruby环境,安装ruby并执行redis-trib.rb脚本 vim /etc/profile PATH=...bin:/opt/ruby/bin # 在最后一行PATH后面追加在bin:后面即可
添加ruby环境变量

# 安装ruby gem 包管理工具 wget http://rubygems.org/downloads/redis-3.3.0.gem gem install -l redis-3.3.0.gem # 安装redis-trib.rb命令 [root@qishi666 jq]# find /opt -name redis-trib.rb /opt/redis-4.0.10/src/redis-trib.rb [root@qishi666 jq]# cp /opt/redis-4.0.10/src/redis-trib.rb /usr/local/bin/
# 一键开启redis-cluster集群
# 每个主节点,有一个从节点,代表--replicas 1
redis-trib.rb create --replicas 1 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
# 集群自动分配主从关系 7000、7001、7002为主 7003、7004、7005为从
# 查看集群状态
redis-cli -p 7000 info replication
# 进入集群状态
redis-cli -p 7000 -c


浙公网安备 33010602011771号