Redis发布订阅,事务,数据持久化

Redis发布订阅
  • 实现发布订阅机制(PUBLISH/SUBSCRIBE/UNSUBSCRIBE/PSUBSCRIBE/PUNSUBSCIBE)
  • SUBSCRIBE chat #客户端1 创建了订阅频道名
  • PUBLISH chat "Redis PUBLISH test" # 新开启个 redis 客户端,然后在同一个频道 runoobChat 发布两次消息,订阅者就能接收到消息
Redis事务
  • 事务以 muiti命令开始,以 exec命令结束
  • watch 命令主要用于防止竞态条件,保证一个事物执行前某些键值不被修改
  • muiti
  • sadd "user:1" 2
  • exec
  • discard #取消事务
持久化
  • redis 提供两种持久化的方式,一种是 RDB 方式,一种是 AOF 方式

  • RDB 的方式是定时将内存中的数据存储到磁盘

  • 配置指定规则自动同步,比如 save 300 10, 表示每 300 内至少有 10 条数据被修改则进行快照

  • 用户执行 SAVE 或者 BGSAVE 命令,SAVE 命令同步执行会阻塞其它客户端的请求,BGSAVE 异步同步数据

  • 执行 FLUSHALL 命令

  • AOF 的方式是每次将更新数据的命令记录到磁盘

  • 通过参数 appendonly 开启 AOF 数据备份

  • 通过参数 appendfsync 设置磁盘缓存刷新机制

  • 因为每条更新数据的命令都会被记录到磁盘,所以磁盘数据会越来越大,因此 redis 提供了重写 AOF 的功能

  • 通过 auto-aof-rewrite-percentage 参数和 auto-aof-rewrite-min-size 参数可以设置自动重写 AOF 文件策略

redis常见问题
  • 缓存穿透:就是客户持续向服务器发起对不存在服务器中数据的请求。客户先在Redis中查询,查询不到后去数据库中查询。
  • 缓存雪崩:热门的数据,突然失效,大量请求到服务器数据库中,比如同一时间失效
Redis 脚本
  • Redis 脚本使用 Lua 解释器来执行脚本
  • EVAL "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first second
  • script: 参数是一段 Lua 5.1 脚本程序。脚本不必(也不应该)定义为一个 Lua 函数
Redis 性能测试

redis-benchmark -n 10000 -q

posted @ 2021-02-22 14:52  惊风破浪的博客  阅读(99)  评论(0编辑  收藏  举报