我经常遇到这样的情况:我要存储的信息比Redis任何简单数据结构所能容纳的信息都要复杂。我仍然想使用Redis,但是我想知道人们在理想情况下是否希望使用嵌套结构使用任何标准替代方案?
您基本上有两种策略:
您可以序列化复杂对象并将其存储为字符串。我们建议使用json或msgpack作为序列化格式。这很容易从大多数客户端语言进行操作。如果需要服务器端访问,则服务器端的Lua脚本可以轻松地对此类对象进行编码/解码,因为Redis是使用针对Lua的msgpack和json支持进行编译的。
您可以将对象拆分为不同的键。除了存储user:id和该ID的复杂数据结构之外,您还可以存储几个键,例如user:id,user:id:address_list,user:id:document_lists等…如果您需要原子性,则对MULTI / EXEC块可用于保证数据一致性并汇总往返次数。
查看此答案中的一个简单示例:
LPUSH命令将对从JSON初始化的记录起作用吗?
最后,Redis不是面向文档的数据库。如果您确实有很多复杂的文档,那么MongoDB,ArangoDB,CouchDB,Couchbase等解决方案可能会更好地为您提供服务…