好记忆不如烂笔头,能记下点东西,就记下点,有时间拿出来看看,也会发觉不一样的感受.
做互联网的,肯定是对 Redis 非常的熟悉了,Redis 也是在不断地变化,最新的Redis已经到 8.0 版本了,今天整理下 Redis 8的新特性。
开源协议回归 AGPLv3
-
背景:之前 Redis 使用 SSPL 授权,引发了社区争议,被认为“开源”实则“收权”,导致社区分裂。
-
新特性:Redis 8.0 重新采用 AGPLv3 开源协议。
-
影响:这一举措让 Redis 社区重新凝聚,开发者能够更自由地使用和贡献代码,也体现了 Redis 创始人 Salvatore 对开源精神的回归和尊重。
-
样例:开发者可以自由地在 AGPLv3 协议下使用 Redis 8.0 源码进行学习、研究和二次开发,比如企业可以基于 Redis 8.0 开发定制化的缓存解决方案,并在遵循协议的前提下开源分享。
性能大幅提升
-
命令延迟降低:命令延迟最多降低了 87%。例如执行
SET
命令,几乎瞬间就能返回结果,大大提高了应用的响应速度。 -
多线程 I/O 支持:开启 8 个线程后,吞吐量可以翻倍。在高并发场景下,比如电商网站的秒杀活动,Redis 8.0 能够更高效地处理大量的读写请求,确保系统的稳定运行。
-
复制机制优化:一边复制一边同步改动,主节点写入速度提升 7.5%,内存节省 35%,整体性能提升 18%。这意味着在主从复制架构中,从节点能够更快地获取主节点的数据,减少了数据同步的延迟和资源消耗。
新增 8 种数据结构
-
Vector Set(向量集合):支持近似搜索,内置 HNSW 算法。例如在 AI 领域,可用于处理图像、文本等数据的向量检索,快速找到与目标向量相似的向量集合,为推荐系统、智能搜索等应用提供支持。
-
JSON:支持 JSON 查询、局部更新、JSONPath 操作。比如在处理复杂的用户数据时,可以直接对 JSON 格式的数据进行精确查询和修改,而无需手动解析和拼接字符串,大大提高了开发效率和数据操作的灵活性。
-
时间序列:采用高效的压缩算法,读取速度快。适用于监控系统、物联网设备数据存储等场景,能够高效地存储和查询时间序列数据,帮助企业实时监控业务指标和设备状态。
-
Bloom Filter、Cuckoo Filter、Count-min Sketch、Top-K、T-Digest:这些原本是模块的数据结构,现在并入内核,成为 Redis 的核心功能,可用于处理大数据流中的各种问题,如快速判断元素是否存在、统计元素频率、估算数据分布等。
强大的查询引擎
-
支持多种查询方式:包括标签查、字段查、模糊查、全文查、向量查等。例如,可以通过标签快速筛选出符合条件的数据,使用模糊查询匹配类似的关键字,利用全文检索功能在大量文本数据中查找相关内容,向量查询则可用于处理复杂的向量相似性问题。
-
支持分词、相似词和近义词拓展:能够对文本数据进行更智能的处理和分析。比如在搜索引擎中,用户输入一个关键词后,Redis 可以通过分词和相似词拓展,找到更多相关的文档或数据,提高搜索的准确性和召回率。
-
跨多个 JSON 或哈希字段建索引,支持多条件搜索:这使得 Redis 在处理复杂数据结构时,能够像关系型数据库一样进行高效的多条件查询。例如在电商系统中,可以根据商品的多个属性(如品牌、价格、类别等)进行组合查询,快速找到符合条件的商品列表。
ACL 权限管控增强
-
权限分类细化:重新整理了 ACL 分类,为新数据结构补充了权限标识。例如可以针对 JSON 数据结构,限制用户只能读取或修改特定的字段,增强了数据的安全性和隔离性。
-
支持精细授权:能够限制用户对特定命令、数据结构的操作权限。比如在多租户环境中,可以为每个租户分配独立的 Redis 数据空间,并严格限制他们只能访问和操作自己租户的数据,防止数据泄露和误操作。
新增实用命令
-
HGETDEL:读取哈希字段的值后立即删除该字段。例如在缓存系统中,当需要获取某个缓存值后立即释放资源时,使用该命令可以一步到位,避免了额外的删除操作。
-
HGETEX:读取哈希字段的值时可以同时修改该字段的 TTL(生存时间)。比如在会话管理中,每次访问用户会话数据时,可以根据需要延长会话的有效期,而无需单独调用设置 TTL 的命令。
-
HSETEX:在设置哈希字段的值时,可以同时为其设置过期时间。这使得哈希字段的过期管理更加方便,无需额外的命令组合,提高了开发效率和代码的可读性。
Redis Stack 和 Redis OSS 整合
-
整合背景:之前 Redis Stack 和 Redis OSS 分别存在,用户在使用时需要根据需求选择合适的版本,可能会遇到模块不匹配等问题。
-
整合优势:现在将 Redis Stack 全部并入 Redis Open Source,用户下载一个 Redis 包即可获得所有功能,包括各种模块和插件。例如,开发者可以方便地使用 Redis Insight 进行可视化管理,利用 VS Code 插件进行开发调试,还可以借助 Redis Copilot 实现自然语言问答等功能,大大提高了 Redis 的易用性和用户体验。
相知不迷路,欢迎你来 :“codingba” or “码出精彩” 交朋友