我对Redis相当新,到目前为止我真的很喜欢它。我开始怀疑是否更好 - 性能明智 - 使用返回大对象的单个查询(以JSON存储信息)或者我应该使用更小的查询,返回较小的对象?
答案 0 :(得分:4)
Redis是单线程应用程序。每个查询都将严格逐个执行。
答案取决于您的需求和查询响应的大小。如果您尝试在一个查询(使用MULTI或LUA脚本)中获取大量密钥,则可能会阻止服务器接受新查询。一个查询允许您将总时间保持尽可能小。
每个查询都是:
例如:
-------------------------------------------------------------------> time
| | | |
client send query(Q) | | got it(G)!
redis execute(E, server blocked) send response(SR)
但是,如果您执行大量小查询,则信息的总时间会更长。
-------------------------------------------------------------------> time
| | | | | | | | | |
client Q | | G | ... Q | | G | ...
redis E SR idle E SR idle
答案是(如果你的系统负载很高):
此外,如果您想保存JSON,请考虑强制使用某种序列化(例如messagepack或lz)以最大限度地减少内存消耗。