Sou*_*nta 5 database-design redis
我想将复杂的结构作为 JSON 对象存储在 Redis 排序集中。
ZADD "mysetkey" 100 [ {"A":"100"}, {"B":"50"}, {"C":"180"}, {"D":"200"} ]
ZADD "mysetkey" 101 [ {"A":"10"}, {"B":"50"}, {"C":"70"}, {"D":"200"} ]
ZADD "mysetkey" 88 [ {"A":"300"}, {"B":"50"}, {"C":"110"}, {"D":"200"} ]
Run Code Online (Sandbox Code Playgroud)
现在是否可以轻松地对存储的值执行操作或搜索?例如,如果我想得到sumof(A) for all elements
? 或者获取所有值为 的元素A < 20 AND value of C > 100
。
我的理解是这是不可能的,因为 Redis 将所有内容都存储为字符串。不过还是想确认一下。
此外,可以通过使用 Redis 支持的数据结构的组合在 Redis 中实现这一点。
您可以在 Lua 脚本中实现所需的功能。在评估 Lua 脚本时,Redis 会加载cjson
库等,并且该库允许您解析 JSON 以从中提取值。查看EVAL
命令。http://redis.io/commands/eval
来自http://www.kyne.com.au/~mark/software/lua-cjson-manual.html的代码示例:
json_text = '[ true, { "foo": "bar" } ]'
value = cjson.decode(json_text)
-- Returns: { true, { foo = "bar" } }
Run Code Online (Sandbox Code Playgroud)
请注意,Redis 一次评估一个脚本,并且在脚本运行时没有其他客户端可以运行其命令,因此这现在可能适合您。
归档时间: |
|
查看次数: |
1722 次 |
最近记录: |