Redis进阶
redis订阅者模式
简介
redis存在订阅者模式。就像是一个广播系统。存在三种角色:订阅者、发布者、频道。
在redis当中,它们表示为subscriber(订阅者)、publisher(发布者)、channel(频道)
其中的行为大抵是:订阅者订阅频道--> 发布者针对于特定频道发布信息 --> 特定订阅者收到消息。
代码演示
-
订阅频道
# 1终端订阅python和http的channel SUBSCRIBE python http # 2终端订阅python的channel SUBSCRIBE python # 忘了命令可以按tab补全
订阅之后会显示频道情况然后处于接收状态:
- 终端1
- 终端2
- 终端1
-
指定频道发布信息
# 指定python和http频道分别发布信息。 PUBLISH python hhhhnsz PUBLISH http nbsz # 注意每次发布完成后会显示收到订阅者个数
-
查看订阅消息
接下来进入订阅之后的终端1、2查看信息。
终端1:
终端2:
redis数据持久化
为什么要有数据持久化
当进程消失,或者机器故障的时候,内存中的数据会被释放。如果没有持久化,数据就会消失。
分类
redis支持两种数据持久化,分别是:AOF和RDB
RDB持久化操作
RDB持久化,即将内存当中的数据保存为一个经过压缩的RDB文件。
可以用于使用其将redis文件恢复。
它有两种执行方式:手动执行生成和保存RDB文件。配置redis.conf定时执行。
操作和配置详情
# redis.conf 配置详情
# rdb配置参数(配置之后可以读取和储存于该位置)(配置后自动开启)
dir /opt/redisdb/
dbfilename dump.rdb
# 自动保存参数
save 900 1 # 900秒一个修改类操作
save 300 10 # 300秒10个操作
save 60 10000 # 60秒10000个操作
rdb持久化实践
- 未配置
# 开启redis之后设置两个key值,设置完成
[root@localhost ~]# redis-cli -p 6380
127.0.0.1:6380> auth 123123456
OK
127.0.0.1:6380> keys *
(empty list or set)
127.0.0.1:6380> SET name longsihua
OK
127.0.0.1:6380> set age 20
OK
127.0.0.1:6380> keys *
1) "age"
2) "name"
# 接着将redis的进程kill
[root@localhost redis-4.0.10]# ps -ef | grep redis
root 16502 1 0 23:40 ? 00:00:00 redis-server 127.0.0.1:6380
root 16514 14411 0 23:40 pts/3 00:00:00 redis-cli -p 6380
root 16556 14341 0 23:44 pts/2 00:00:00 grep --color=auto redis
[root@localhost redis-4.0.10]# kill -9 16502
# 再次开启redis,key全部消失
[root@localhost ~]# redis-cli -p 6380
127.0.0.1:6380> keys *
(error) NOAUTH Authentication required.
127.0.0.1:6380> auth 123123456
OK
127.0.0.1:6380> keys *
(empty list or set)
- 配置后
# 与上方相同。在设置完key之后执行save命令
[root@localhost ~]# redis-cli -p 6380
127.0.0.1:6380> AUTH 123123456
OK
127.0.0.1:6380> KEYS *
(empty list or set)
127.0.0.1:6380> set lll long
OK
127.0.0.1:6380> set age 1212
OK
127.0.0.1:6380> KEYS *
1) "age"
2) "lll"
127.0.0.1:6380> save
OK
# 杀死进程之后再通过原来的配置文件启动
# 可以发现key值还存在
[root@localhost ~]# redis-cli -p 6380
127.0.0.1:6380> AUTH 123123456
OK
127.0.0.1:6380> KEYS *
1) "lll"
2) "age"
aof持久化
记录服务器执行的所有变更操作命令。再启动时可以重新执行回复
AOF文件的命令全部以redis协议的格式保存。追加在文件结尾
优点:最大程度保证数据不丢失
缺点: 日志文件大
配置参数
# 设置两个参数即可立即启动
# redis.conf
appendonly yes
appendfsync # always-总是修改类的操作 # everysec-每秒做一次持久化 # no-依赖于系统自带的缓存大小机制
实践
由于内容几乎与rdb持久化操作一致。这里展示一下aof生成的appendonly文件
附加: 通过config set命令可以临时修改配置文件,可以用于切换持久化模式。
比如说rdb切换为aof:
127.0.0.1:6379> CONFIG set appendonly yes #开启AOF功能
OK
127.0.0.1:6379> CONFIG SET save "" #关闭RDB功能
OK
注意,这个只是临时进行aof的切换,需要更改配置文件使得之后启动也生效。
标签:订阅,127.0,OK,进阶,0.1,redis,6380 From: https://www.cnblogs.com/lmlsh/p/18361349