我经常遇到这样的情况:我要存储的信息比 Redis 的任何简单数据结构所能容纳的信息都多。我仍然想使用 Redis,但我想知道人们在理想情况下想要使用嵌套结构时是否有任何标准的替代方案?
最佳答案
你基本上有两种策略:
您可以序列化您的复杂对象并将它们存储为字符串。我们建议使用 json 或 msgpack 作为序列化格式。这很容易从大多数客户端语言进行操作。如果需要服务器端访问,那么服务器端 Lua 脚本可以轻松地编码/解码此类对象,因为 Redis 是使用 Lua 的 msgpack 和 json 支持编译的。
您可以将对象拆分为不同的键。您可以存储几个键,例如 user:id、user:id:address_list、user:id:document_lists 等,而不是将 user:id 和复杂的数据结构存储到此 id ...如果您需要原子性,流水线化 MULTI/EXEC block 可用于保证数据一致性,并聚合往返。
请参阅此答案中的一个简单示例:
Will the LPUSH command work on a record that was initialized from JSON?
最后,Redis 不是一个面向文档的数据库。如果你真的有很多复杂的文档,也许你可以使用 MongoDB、ArangoDB、CouchDB、Couchbase 等解决方案更好地服务......
关于redis - Redis 中嵌套结构的替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16094574/