我们宣布了Redis 8,这是迄今为止最先进、性能最优越的 Redis 产品。今天,我们很高兴地宣布,Redis 8 的第一个里程碑版本已在社区版中提供,供您试用。
Redis 8 引入了七种新的数据结构——JSON、时间序列和五种概率类型——以及迄今为止最快、最具可扩展性的 Redis 查询引擎。这些能力以前只能通过 Redis Stack 或我们的软件和云产品单独获得,现在已原生内置于 Redis 社区版中。这些技术进步持续使 Redis 成为实时数据库的绝佳选择,特别是对于需要强大搜索、查询和数据分析能力的用户。本次发布引入了向量搜索、全文搜索的二级索引、精确匹配、地理空间查询、数值数据处理和数据处理等高级功能。更多关键功能将在后续的里程碑版本中揭示,进一步增强 Redis 的实时能力。
这对我们的社区意味着什么?您可以利用 Redis 最新的数据能力,将其用作管理 JSON 文档的文档存储,或作为向量数据库来支持生成式人工智能应用。
在我们努力迈向 Redis 8 的 GA(通用可用)版本之际,我们将为您抢先预览其新功能,包括 Redis 8 如何改变会话管理、缓存和推荐系统等传统用例,使基于 Redis 构建的应用更加丰富和多功能。
会话传统上被建模为字符串或哈希。虽然字符串序列化和反序列化提供了一种简单的即时解决方案,但会话管理器必须从数据库中提取和存储整个会话,这导致了不必要的数据处理,从而导致性能不佳和数据传输成本。
将会话数据存储为哈希代表了一种逻辑演进。然而,只有将哈希与跨会话搜索结合使用时,才能揭示活动会话中隐藏的、否则未被利用的价值。借助 Redis 8,您可以首次搜索活动会话,以提供实时洞察、自动驱动运营决策、检测使用模式,并直接对会话数据运行各种查询。此外,随着 Redis 社区版 7.4 最近增加了哈希字段过期功能,可以在会话中管理临时数据。
但这还不是全部。您可以使用 JSON 会话建模将会话管理推向新的高度,它支持一种灵活的方式来存储和检索用户会话数据。不再需要序列化和反序列化,这有助于加快操作并减少数据传输带宽,从而降低相关成本。
除了使用 JSONPath 语法检索单个会话数据外,跨活动会话执行实时搜索操作可提供实时信息,以改善用户体验。它加速了数据分析,从而增加了库存管理、分销链、预订系统等的价值。
虽然它代表了最简单的实现(在 Laravel 或 Flask 等框架中很流行),但它并非最优,因为它在每次读写操作时都需要对整个会话进行序列化和反序列化。
> SETEX "sf_s82099723004b48095935cddc89b29fa2" 1440 "_sf2_attributes|a:1:{s:15:\"sym-session-key\";s:17:\"sym-session-value\";}_sf2_meta|a:3:{s:1:\"u\";i:1722251396;s:1:\"c\";i:1722251264;s:1:\"l\";i:0;}"
"OK"
> GET sf_s82099723004b48095935cddc89b29fa2
"_sf2_attributes|a:1:{s:15:\"sym-session-key\";s:17:\"sym-session-value\";}_sf2_meta|a:3:{s:1:\"u\";i:1722251396;s:1:\"c\";i:1722251264;s:1:\"l\";i:0;}"2.
这减少了带宽消耗和计算开销。Spring 等框架采用了这种方法:通过一次网络操作从会话中检索一个或多个条目。
> HSET session:ab6094d4-ba19-407d-b6c2-f7643f171fcf id mortensi sessionAttr:promo ABC-abc-1234
(integer) 2
> HMGET session:ab6094d4-ba19-407d-b6c2-f7643f171fcf id
1) "mortensi"
哈希会话建模加上 Redis 7.4 中引入的哈希字段过期功能,提供了对用户会话数据的更多控制。通过哈希字段过期,会话数据可以在会话仍然活跃时过期。这极大地简化了预订和预约,因为用户必须在特定时间范围内完成操作。
> HEXPIRE session:ab6094d4-ba19-407d-b6c2-f7643f171fcf 7200 FIELDS 1 sessionAttr:promo
1) "1"
> HTTL session:ab6094d4-ba19-407d-b6c2-f7643f171fcf FIELDS 1 sessionAttr:promo
1) "7185"
内置的查询引擎支持跨会话搜索,以检索对您的业务至关重要的信息。您可以按位置、时间戳等任何数据进行搜索,并获取用户的活动会话,以了解正在发生的事情,并提供洞察以改善用户体验。
> FT.CREATE session_idx ON HASH PREFIX 1 session: SCHEMA sessionAttr:promo AS promo TAG
"OK"
> FT.SEARCH session_idx '@promo:{ABC\-abc\-1234}' RETURN 1 id
1) "1"
2) "session:ab6094d4-ba19-407d-b6c2-f7643f171fcf"
3) 1) "id"
2) "mortensi"
借助 Redis 8 使用 JSON 解锁会话建模,将会话建模为包含数组、对象以及一组用于与会话交互的命令的分层数据。使用 JSONPath 进行会话查找和访问特定元素,并享受事实上的数据传输标准带来的 Web、微服务、编程语言等方面的互操作性。
> JSON.SET session:a30d0c64-4cad-4088-a9ef-f1889d182df4 $ '{"lastAccessedTime":1672475765650,"creationTime":1672475765649,"user":{"name":"John","last":"Doe"},"visited":["www.redis.io","www.google.com"], "location": "34.638,31.79", "cart":[{"itemId":"hp-2341","itemCost":1990.99,"quantity":3},{"itemId":"MacBook","itemCost":2990.99,"quantity":15}]}'
"OK"
> JSON.GET session:a30d0c64-4cad-4088-a9ef-f1889d182df4 $.user.name
"[\"John\"]"
Redis 8 支持二级索引,因此您可以在任意深度创建索引并执行实时搜索和数据分析。您可以使用 JSONPath 执行会话内搜索,或执行跨会话搜索以从活动会话中发现重要数据。您正在寻找的数据将无所遁形。
> FT.CREATE session_idx ON JSON PREFIX 1 session: SCHEMA $.lastAccessedTime AS lastAccessedTime NUMERIC SORTABLE $.creationTime AS creationTime NUMERIC SORTABLE $.visited AS visited TEXT $.cart[*].itemId AS itemid TAG $.location AS loc GEO
"OK"
> FT.SEARCH session_idx '@itemid:{MacBook}' RETURN 0
1) "1"
2) "session:a30d0c64-4cad-4088-a9ef-f1889d182df4"
Redis 经常用于管理零售和电子商务应用中的会话。Redis 8 赋予您对这些会话更多的控制和灵活性。想象一下,您可以跟踪购物车中某个产品的数量、地理位置以及购物车随时间的变化活动。实时数据分析将开启新的商业机会,通过及时决策库存管理、大额购物车折扣和机会、提供附近门店自提服务等。
Redis 查询引擎支持多种索引类型,可实现对会话数据的实时搜索。
此外,同时过滤多个索引可以根据选择的所需方面(facet)提供活动会话的不同视图。
除了零售业,会话管理对于许多行业也至关重要,包括银行、游戏、旅游和酒店业等。无论会话数据是什么,Redis 8 都提供了灵活的数据建模和搜索能力。
加速应用不仅仅依赖于会话管理。缓存是最常见的用例之一,Redis 提供了多种结构来帮助建模数据以进行实时检索。最流行的生态系统和开发框架通过提供简单的 API 来抽象缓存管理,通常将缓存数据存储在字符串中。
虽然缓存通常被设计用于直接或主键访问,但能够从单个存储库或(如下例所示)在联合数据的情况下对缓存数据执行实时搜索和处理的能力至关重要。
用于建模缓存所需的数据结构会影响数据检索和通过网络传输的最佳方式。类似于会话管理中所述,选择哈希或 JSON 数据结构而不是字符串,可以实现更高效的数据建模方法,支持对缓存数据进行更快速的操作。
再次强调,Redis 查询引擎支持实时搜索和分析,可以丰富用户体验或帮助构建数据集的聚合视图,特别是当数据源中的整个数据集完全缓存时(通过Redis 数据集成、RIOT或其他同步技术)。Redis 查询引擎提供了快速结果,这对于关系型或通常较慢的记录系统来说是难以实现的。
您可以将 Redis 8 与我们最新夏季版本的所有发布结合使用,包括 Redis Flex,它允许您以相同的价格缓存 5 倍的数据。
每个人都知道缓存的力量。虽然缓存是应用对速度需求的完美答案,但传统缓存方法最适合结构化数据。那么,如果数据是半结构化或非结构化怎么办?将数据存储为向量的能力以及索引和搜索能力已将传统缓存演变为语义缓存。得益于 Redis 8.0 中提供的 Redis 查询引擎,将非结构化数据建模为向量提供了一种独特的能力,可以用向量搜索增强传统的确定性搜索方法,而向量搜索是语义缓存的基础。
特别是,语义缓存是下一代生成式人工智能辅助聊天机器人的核心。语义缓存存储先前回答问题的结果,从而更快地检索未来类似的查询。通过利用 Redis 的内置缓存能力和向量搜索,可以有效地存储和重用响应,减少发送到 LLM(大型语言模型)服务的请求和 token 数量,从而降低 LLM 服务产生的成本,并提高应用生成响应的吞吐量。
我们很高兴能帮助您构建下一代应用。Redis 8 提供了管理您的数据和现代化应用的新能力。随着 Redis 8 后续里程碑版本的到来,还将有更多内容。
亲自试用,从Docker Hub 下载 Redis 8 Docker 镜像,并从redis.io 下载 Redis Insight 或我们的官方客户端库。