第十八章 【高级篇】分布式缓存Redis6.X新特性讲解拓展
第十八章 【高级篇】分布式缓存Redis6.X新特性讲解拓展
简介: 新版Redis6核心特性介绍-多线程
-
新版Redis6特性讲解
-
支持多线程
- redis6多线程只是用来处理网络数据的读写和协议解析上,底层数据操作还是单线程
- 执行命令仍然是单线程,之所以这么设计是不想因为多线程而变得复杂,需要去控制 key、lua、事务,LPUSH/LPOP 等等的并发问题
- 默认不开启
-
官方建议 ( 线程数小于机器核数 )
- 4 核的机器建议设置为 2 或 3 个线程
- 8 核的建议设置为 4或6个线程,
-
io-threads-do-reads yes
io-threads 线程数
-
开启多线程后,是否会存在线程并发安全问题?
-
不会有安全问题,Redis 的多线程部分只是用来处理网络数据的读写和协议解析,执行命令仍然是单线程顺序执行。
-
第2集 新版Redis6核心特性-Access Control List权限控制
简介: 新版Redis6核心特性介绍-acl 权限控制
-
引入了 ACL(Access Control List)
-
之前的redis没有用户的概念,redis6引入了acl
-
可以给每个用户分配不同的权限来控制权限
-
通过限制对命令和密钥的访问来提高安全性,以使不受信任的客户端无法访问
-
提高操作安全性,以防止由于软件错误或人为错误而导致进程或人员访问 Redis,从而损坏数据或配置
-
常用命令
- 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缓存控制
-
-
详细: 分为两种模式
redis在服务端记录访问的连接和相关的key, 当key有变化时通知相应的应用
应用收到请求后自行处理有变化的key, 进而实现client cache与redis的一致
这需要客户端实现,目前lettuce对其进行了支持
-
-
默认模式
-
Server 端全局唯一的表(Invalidation Table)记录每个Client访问的Key,当发生变更时,向client推送数据过期消息。
- 优点:只对Client发送其访问过的被修改的数据
- 缺点:Server端需要额外存储较大的数据量。
-
-
广播模式
- 客户端订阅key前缀的广播,服务端记录key前缀与client的对应关系。当相匹配的key发生变化时通知client。
- 优点:服务端记录信息比较少
- 缺点:client会收到自己未访问过的key的失效通知