redis性能,将json对象存储为一个string
我需要保存一个用户模型,如下所示:
{ "nickname": "alan", "email": ..., "password":..., ...} // and a couple of other fields
今天我使用Set:users
在这个集合中,我有一个像alan这样的用户
在这个成员我有上面的散列
这工作正常,但我只是想知道是否可以使用以下方法的上述方法:
仍然使用用户设置(轻松获取用户(成员)列表)
在这个集合中只使用一个键/值存储,如:
key:alan value:上述用户散列的stringify版本
检索logging会更容易(我将不得不parsing与JSON)。
我对redis很陌生,我不确定最好的是什么。 你怎么看 ?
您可以使用Redis 散列数据结构来存储您的JSON对象字段和值。 例如,您的“用户”集仍然可以用作存储所有用户的列表,并且您的个人JSON对象可以像这样存储到哈希中:
db.hmset("user:id", JSON.stringify(jsonObj));
现在,您可以通过键入所有用户或只有特定的一个(从中获取/设置指定的字段/值)。 这 两个问题也可能与您的情况有关。
编辑:(抱歉,我没有意识到,我们之前谈到这个)
检索logging会更容易(我将不得不parsing与JSON)。
这是真的,但是使用散列数据结构,您只能获取/设置需要使用的字段/值。 如果您只想更改对象的一部分(其他的一点是您需要每次对对象进行string化/parsing),则检索整个JSON对象可能会导致性能下降(取决于您多久执行一次)。
JSON over HASH的另一个优点是维护types。 123.3
变成了string"123.3"
并且依赖于库Null
/ None
可以意外地被转换为"null"
。
两者都是有点繁琐,因为这将需要写一个变压器提取string,并将其转换回其预期的types。
对于空间/内存消耗的考虑,我开始倾向于将值存储为JSON列表["my_type_version", 123.5, null , ... ]
所以我没有N * ( sum(len(concat(JSON key names)))
,在我的情况下,它是Redis已用内存占用量的+ 60%。
记住:哈希不能存储嵌套的对象,JSON可以做到这一点。
说实话,无论哪种方式工作正常。 你存储的方式是你需要做的devise决定。 这取决于你想如何检索用户信息等
在性能方面,存储用户对象的JSON编码版本将使用较less的内存,并且花费较less的时间来存储/检索。 也就是说,JSONparsing可能比从Redis中检索每个字段更快。 而且,即使不是这样,也可能更有效率。 无论如何,性能的差异可能是最小的。
- 如何通过cbq在Couchbase服务器上创build一个使用密码authentication的桶的索引?
- 在Dokku安装中导入并添加索引到mongodb
- JSON stringify将0转换为null
- 在mongoose中select几个字段作为数组
- 无法在heroku上启动gunicorn(Django Node应用程序)错误:正在使用的连接:('0.0.0.0',46831)
- flatiron.js路由和模板与工会,董事和板块?
- Node.js使用相对IDlogging多个请求
- Google应用引擎上的服务器端JavaScript
- 强制量angular器onPrepare等待asynchronoushttp请求