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