如果要提高速度,则在将结构或“缓存”存储在Redis中时,应尽可能多地准备。如果将产品存储在中HSET
,并在此的“产品数据”成员旁边添加类别计数器(每个类别一个)HSET
,则可以HINCRBY
用来增加/减少计数器。
通常(为您的需求设计Redis缓存):您应该尝试防止检索不需要的任何数据。
我建议使用Lua脚本来存储(/更新/删除)以及检索汇总报告。Lua脚本在Redis服务器上执行。ServiceStack支持它们(SCRIPT LOAD
+ EVALSHA
或简单地EVAL
),您还可以尝试BookSleeve C#客户端模块(我们使用它,并且速度更快。 “更快” :良好的Redis数据设计是第一位的)。BookSleeve C#客户端专注于多线程Redis管道,这可能是您在处理大型数据集时想要的。ServiceStack也应该可以进行流水线操作。
如果类别和产品具有整数ID,您也可以将其与结合使用ZSET
,在其中您可以将ID用作得分字段。使用a,ZRANGEBYSCORE
您可以直接获取“记录”。只要您的ID使用的是15位以下的数字,并且不使用“分数”的小数部分,该技术就很安全。因此,该ID必须保持在-999999999999999到999999999999999的范围内。注:存在这些限制是因为Redis服务器实际上将分数(浮点数)存储为内部的redis字符串表示形式。
希望这会有所帮助,TW