我不断遇到需要存储的信息比 Redis 任何简单数据结构更复杂的情况。我仍然想使用 Redis,但我想知道人们在理想情况下想要使用嵌套结构时是否有任何标准替代方案?
你基本上有两种策略:
您可以序列化复杂的对象并将它们存储为字符串。我们建议使用 json 或 msgpack 作为序列化格式。这对于大多数客户端语言来说都很容易操作。如果需要服务器端访问,那么服务器端 Lua 脚本可以轻松地对此类对象进行编码/解码,因为 Redis 是使用 Lua 的 msgpack 和 json 支持进行编译的。
您可以将对象拆分为不同的键。您可以存储多个键,例如 user:id、user:id:address_list、user:id:document_lists 等,而不是存储 user:id 和复杂的数据结构到此 id...如果需要原子性,请使用管道 MULTI/ EXEC块可用于保证数据一致性,并聚合往返。
请参阅此答案中的一个简单示例:
LPUSH 命令是否适用于从 JSON 初始化的记录? https://stackoverflow.com/questions/10396764/will-the-lpush-command-work-on-a-record-that-was-initialized-from-json/10397318#10397318
最后,Redis 不是面向文档的数据库。如果您确实有很多复杂的文档,也许 MongoDB、ArangoDB、CouchDB、Couchbase 等解决方案可以为您提供更好的服务...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)