【发布时间】:2016-11-12 07:58:07
【问题描述】:
我们想 RPUSH/LPUSH 一个带有空列表的键。
这是出于一致性原因:当使用 LRANGE 读取键而不是列表是否为空时,其余代码的行为相同。
为什么如果一个键有一个空列表,它被删除是一个问题?
因为我们使用 Redis 作为缓存,想区分这两种情况:
1. 尚未缓存具有对应值的特定键。在这种情况下,我们要计算值(需要很长时间)并缓存它们。计算的结果可能是一个空列表。
2. 一个空列表的键已经被缓存了。在这种情况下,我们不想执行计算并返回一个空列表。
以下选项不起作用:
1. rpush 键 --> 没有“参数数量错误”的列表值结果。
2. rpush key [] --> 添加一个 '[]' 项
我们目前使用的(丑陋的)解决方案是存储一个带有“EMPTY-ITEM”项的单项列表,并在我们读取列表时进行检查。
有什么想法吗?
谢谢
【问题讨论】:
标签: python caching redis push empty-list