articleList

18-【高级篇】分布式缓存 Redis6.X 新特性讲解拓展

2025/03/16 posted in  Redis
Tags: 

第 1 集 新版 Redis6 核心特性-多线程介绍

简介: 新版 Redis6 核心特性介绍-多线程

  • 新版 Redis6 特性讲解

    • 支持多线程

      • redis6 多线程只是用来处理网络数据的读写和协议解析上,底层数据操作还是单线程

      • 执行命令仍然是单线程,之所以这么设计是不想因为多线程而变得复杂,需要去控制 key、lua、事务,LPUSH/LPOP 等等的并发问题

      • 默认不开启

        io-threads-do-reads yes
        io-threads 线程数
        
      • 官方建议 ( 线程数小于机器核数 )

        • 4 核的机器建议设置为 2 或 3 个线程
        • 8 核的建议设置为 4 或 6 个线程,
    • 开启多线程后,是否会存在线程并发安全问题?

    • 不会有安全问题,Redis 的多线程部分只是用来处理网络数据的读写和协议解析,执行命令仍然是单线程顺序执行。

第 2 集 新版 Redis6 核心特性-Access Control List 权限控制

简介: 新版 Redis6 核心特性介绍-acl 权限控制

  • 引入了 ACL(Access Control List)

    • 之前的 redis 没有用户的概念,redis6 引入了 acl

    • 可以给每个用户分配不同的权限来控制权限

    • 通过限制对命令和密钥的访问来提高安全性,以使不受信任的客户端无法访问

    • 提高操作安全性,以防止由于软件错误或人为错误而导致进程或人员访问 Redis,从而损坏数据或配置

    • 文档:https://redis.io/topics/acl

    • 常用命令

      • acl list 当前启用的 ACL 规则
      • acl cat 支持的权限分类列表
      • acl cat hash 返回指定类别中的命令
      • acl setuser 创建和修改用户命令
      • acl deluser 删除用户命令
      +<command> 将命令添加到用户可以调用的命令列表中,如+@hash
      -<command> 将命令从用户可以调用的命令列表中移除
      ​
      #切换默认用户
      auth default 123456
      ​
      ​
      #例子 密码 123 ,全部key,全部权限
      acl setuser jack on >123 ~* +@all
      ​
      #例子 密码 123 ,全部key,get权限
      acl setuser jack on >123 ~* +get
      
参 数 说明
user 用户
default 表示默认用户名,或则自己定义的用户名
on 表示是否启用该用户,默认为 off(禁用)
#... 表示用户密码,nopass 表示不需要密码
~* 表示可以访问的 Key(正则匹配)
+@ 表示用户的权限,“+”表示授权权限,有权限操作或访问,“-”表示还是没有权限; @为权限分类,可以通过 ACL CAT 查询支持的分类。+@all 表示所有权限,nocommands 表示不给与任何命令的操作权限

第 3 集 新版 Redis6 核心特性-Client-Side-Caching 客户端缓存

简介: 新版 Redis6 核心特性介绍-客户端缓存

  • 新版 Redis6 特性讲解

    • client side caching 客户端缓存

      • 类似浏览器缓存一样

        • 在服务器端更新了静态文件(如 css、js、图片),能够在客户端得到及时的更新,但又不想让浏览器每次请求都从服务器端获取静态资源
        • 类似前端的-Expires、Last-Modified、Etag 缓存控制
    • 文档:https://redis.io/topics/client-side-caching

    • 详细: 分为两种模式

      redis在服务端记录访问的连接和相关的key, 当key有变化时通知相应的应用
      应用收到请求后自行处理有变化的key, 进而实现client cache与redis的一致
      这需要客户端实现,目前lettuce对其进行了支持
      
  • 默认模式

    • Server 端全局唯一的表(Invalidation Table)记录每个 Client 访问的 Key,当发生变更时,向 client 推送数据过期消息。

      • 优点:只对 Client 发送其访问过的被修改的数据
      • 缺点:Server 端需要额外存储较大的数据量。
  • 广播模式

    • 客户端订阅 key 前缀的广播,服务端记录 key 前缀与 client 的对应关系。当相匹配的 key 发生变化时通知 client。
    • 优点:服务端记录信息比较少
    • 缺点:client 会收到自己未访问过的 key 的失效通知