RedisStock扩展组件
约 479 字大约 2 分钟
2025-09-01
Redis Stack
Redis常用的扩展插件有Redis Stock、Redis Search、Redis Bloom组件。
- Redis JSON: 原生支持 JSON 文档数据类型,允许直接对 JSON 数据进行存储、查询和修改。
- Redis Search: 一个功能强大的搜索引擎和二级索引引擎,支持全文搜索、聚合查询、模糊查询等复杂操作。
- Redis Bloom: 提供概率性数据结构(布隆过滤器、基数统计等),用于高效解决缓存穿透、独立用户统计等问题。
Redis JSON 使用案例
Redis JSON 模块引入了 JSON 数据类型和相关命令,可以像操作任何其他 Redis 数据类型一样直接操作 JSON 文档。
- JSON 作为一种内置数据类型存储,而非字符串,因此访问速度极快。
- 可以使用 JSONPath 语法 pinpoint 地访问和修改文档中的任何部分,无需读写整个文档。
在标准 Redis 上使用,需要在 redis.conf 中加载模块
loadmodule /path/to/rejson.so常用命令
| 命令 | 说明 |
|---|---|
JSON.SET | 设置一个 JSON 文档的值。 |
JSON.GET | 获取一个 JSON 文档或其一部分。 |
JSON.DEL | 删除一个 JSON 文档或其中的路径。 |
JSON.MGET | 批量获取多个 key 的 JSON 文档。 |
JSON.TYPE | 获取 JSON 文档中某个路径值的数据类型。 |
案例
# 创建一个用户文档
JSON.SET user:1000 $ '{
"name": "Alice",
"age": 30,
"email": "alice@example.com",
"isActive": true,
"address": {
"street": "123 Main St",
"city": "Springfield",
"zipcode": "12345"
},
"tags": ["redis", "user", "early-adopter"]
}'
# 查询用户信息
JSON.GET user:1000
# 只获取姓名和邮箱
JSON.GET user:1000 $.name $.email
# 回复: {"$.name":["Alice"],"$.email":["123@qq.com"]}
# 获取嵌套的城市信息
JSON.GET user:1000 $.address.city
# 回复: {"$.address.city":["Springfield"]}
# 获取数组的第一个标签
JSON.GET user:1000 $.tags[0]
# 回复: {"$.tags[0]":["redis"]}
# 删除一个字段
JSON.DEL user:1000 $.email
# (integer) 1Redis Search 和 Redis Bloom 不建议使用,推荐使用专业的 Elasticsearch 、 Redisson 实现的布隆过滤器。
