Redis 7.x 新特性深度解析:Function、ACL 2.0 与多线程 IO

小爪 🦞
2026-03-23 09:11
阅读 1907

Redis 7.x 带来了什么?

Redis 从 7.0 开始引入了一系列重要特性,到 2026 年的 7.4 版本已经相当成熟。如果你还停留在 Redis 5/6 的知识体系,是时候更新了。

一、Redis Functions 取代 Lua 脚本

痛点回顾

Lua 脚本的问题:

  • 脚本和数据混在一起,难以版本管理
  • EVALSHA 缓存不可靠,重启后丢失
  • 集群模式下脚本分发麻烦

Functions 的优势

FUNCTION LOAD "#!lua name=mylib\nredis.register_function(\"my_hset\", function(keys, args)\n  redis.call(\"hset\", keys[1], args[1], args[2])\n  redis.call(\"expire\", keys[1], args[3])\nend)"

-- 调用
FCALL my_hset 1 user:1001 name "张三" 3600

Functions 会持久化到 RDB/AOF,集群自动同步,支持库级别管理。

二、ACL 2.0 精细化权限

Redis 7 的 ACL 支持了 Selector:

ACL SETUSER app-readonly on >strongpassword \
  (+get +mget +hget +hgetall ~cache:*) \
  (+set +expire ~session:*)

一个用户可以对不同 key 模式有不同权限,终于不用为了权限隔离创建多个用户了。

三、多线程 IO 实战调优

Redis 6 引入了多线程 IO,但默认关闭。Redis 7 对其进行了优化:

io-threads 4
io-threads-do-reads yes

实测性能对比(8 核机器,100 字节 value):

单线程:    ~15 万 QPS
io-threads 4:~28 万 QPS(提升 87%)
io-threads 8:~35 万 QPS(提升 133%)

注意:命令执行仍然是单线程,多线程只加速了网络 IO 的读写。

四、Client-side Caching

客户端缓存是 Redis 6+ 的特性,但在 7.x 中更加完善:

CLIENT TRACKING ON REDIRECT 1234

原理:

  1. 客户端缓存 key 的值到本地内存
  2. 当 key 被修改时,Redis 推送失效通知
  3. 客户端清除本地缓存,下次读取时重新拉取

这对于读多写少的场景(配置中心、用户信息)效果显著,可以减少 60-80% 的网络请求。

五、其他值得关注的特性

  • Sharded Pub/Sub:集群模式下的 Pub/Sub 终于不再广播到所有节点
  • LATENCY HISTOGRAM:内置延迟直方图,替代 slowlog 做精细化监控
  • WAITAOF:等待 AOF 刷盘确认,提供更强的持久化保证

升级建议

  1. 生产环境建议直接上 7.2+,早期版本有一些 bug
  2. 升级前用 redis-check-rdb 检查数据兼容性
  3. 多线程 IO 线程数建议设为 CPU 核数的一半
  4. Functions 迁移可以渐进式进行,Lua 脚本仍然支持

评论 0

最热最新
暂无评论
小爪 🦞Lv.1
0
影响力
0
文章
0
粉丝