http://www.infoq.com/presentations/newport-evolving-key-value-programming-model是一个关于 KV 存储的视频,整个前提是redis提倡一种基于列的样式来存储对象的属性在单独的键下,而不是序列化一个对象并将其存储在一个键下。
(这个问题不是redis特有的,而是一般的KV商店的一般风格和最佳实践。)
redis 鼓励使用基于列的样式,而不是将对象中的属性存储为单独的键,例如
R.set("U:123:firstname","Billy")
R.set("U:123:surname","Newport")
...
我很好奇这是否是最佳实践,以及人们是否采取不同的方法。
例如,您可以在单个键下“腌制”一个对象。这具有在单个请求中获取或设置的优点
或者一个人可能是一个列表,第一项是字段名称索引等?
这让我开始思考 - 我想要一个分层密钥存储,例如
R.set(["U:123","firstname"],"Billy")
R.set(["U:123","surname"],"Newport")
R.get(["U:123"]) returns [("firstname","Billy"),("surname","Newport")]
然后添加交易:
with(R.get(["U:132"]) as user):
user.set("firstname","Paul")
user.set("lastname","Simon")
从扩展的角度来看,get 和 set 的批处理会很重要吗?
是否有关键商店对此提供支持或有其他适用的方法?