redis 发布订阅和持久化存储

    Python编程 wuya 275次浏览 已收录 0个评论

    发布订阅

    • 相关命令
      命令 说明
      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:发布/订阅

    学海无涯 , 版权所有丨如未注明 , 均为原创丨转载请注明redis 发布订阅和持久化存储
    喜欢 (0)
    发表我的评论
    取消评论
    表情 加粗 删除线 居中 斜体 签到

    Hi,您需要填写昵称和邮箱!

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址