redis 发布订阅和持久化存储

发布订阅

  • 相关命令
    命令 说明
    subscribe 订阅一个或多个频道,会接收到这些频道发布的消息
    unsubscribe 取消指定频道的订阅
    psubscribe 功能同subscribe,但是会订阅符合某种模式的频道
    punsubscribe 取消psubscribe订阅的频道
    publish 向指定的频道发布消息
    pubsub 查看活跃的频道信息(可以指定模式)<br />pubsub channels 查看所有频道信息<br />pubsub channel CCTV* 查看所有CCTV开头的频道信息
  • 示例演示:
    • 打开一个客户端,先订阅指定的频道
    • 再打开一个客户端,向指定的频道发布消息
    • 在订阅位置就会收到指定频道的消息

持久化存储

  • RDB:Redis DataBase,默认是开启的
    • 配置:
    dbfilename dump.rdb             # 保存数据的文件名
    dir ./                          # 数据文件的保存位置
    save 900 1                      # 更改一个键,900s后会保存
    save 300 10                     # 更改10个键,300s后会保存
    save 60 10000                   # 更改10000个键,60s后会保存
    • 说明
      • 当服务器关闭时会自动保存
      • 使用save命令进行前台保存或者使用bgsave命令进行后台保存
      • 启动服务时数据会自动加载恢复至内存
    • 关闭:
      • 注释掉所有的save配置
      • 添加配置save ""
    • 故障恢复:redis-check-rdb
  • AOF:Append Only File,将所有能够造成数据更改的命令保存到一个文件中,默认是关闭的
    • 配置:
    appendonly no                       # 启动开关,将no改为yes即可开启
    appendfilename "appendonly.aof"     # aof的文件名
    appendfsync always|everysec|no      # 文件同步频率,立即|每秒|从不(依赖OS)
    • AOF文件自动重写配置:两个条件同时满足才会自动重写
    auto-aof-rewrite-percentage 100     # 新命令占原文件的百分比
    auto-aof-rewrite-min-size 64mb      # 本次重写的最小数据量
    • 手动重写:bgrewriteaof
    • 故障恢复:redis-check-aof
  • RDB VS AOF
    方案 优点 不足
    RDB 数据安全可靠、体积小、恢复快 保存有间隔,数据不严谨
    AOF 有较高的数据完整性 体积大,恢复慢,重写耗资源
  • 同时开启RDB和AOF时恢复数据
    • 问题:

      只有dump.rdb文件,如果启动服务时同时开启了aof,会优先从appendonly.aof文件中恢复数据,若改文件不存在则新建一个空白文件,然后从改文件中恢复,恢复失败。

    • 正确步骤:
      • redis配置文件先关闭aofappendonly no
      • dumo.rdb文件拷贝到指定目录dir
      • 启动redis服务
      • 通过命令开启AOF:config set appendonly yes,会立即进行aof持久化存储
      • 关闭redis服务
      • 修改配置文件:appendonly yes
      • 再次开启redis服务就行了

代码操作Redis

  • 安装扩展:pip install redis
  • 示例演示:
    • 01-simple.py:简单的连接,终端命令基本都变成了函数
    • 02-pool.py:连接池,可以降低频繁的连接断开redis服务器的开销
    • 03-transaction.py:事务处理,先记录命令然后一次性发送过去
    • 04-subscribe.py05-publish.py:发布/订阅
分类: Python编程

发表评论 X

电子邮件地址不会被公开。 必填项已用*标注

姓名不能为空
填写正确的email