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

 

posted @ 2019-04-08 20:09  pythonernoob  阅读(115)  评论(0)    收藏  举报