python - Redis - 如何 RPUSH/LPUSH 一个空列表

标签 python caching redis push empty-list

我们想 RPUSH/LPUSH 一个空列表的键。
这是出于一致性原因:当使用 LRANGE 读取键而不是列表是否为空时,其余代码的行为相同。

为什么如果一个键有一个空列表它被删除是一个问题?
因为我们使用 Redis 作为缓存,所以要区分两种情况:
1. 尚未缓存具有相应值的特定键。在这种情况下,我们想要计算值(需要很长时间)并缓存它们。计算的结果可能是一个空列表。
2. 已经缓存了具有空列表的键。在这种情况下,我们不希望执行计算并返回一个空列表。

以下选项不起作用:

1. rpush 键 --> 没有列表值结果为“参数数量错误”。
2. rpush key [] --> 添加一个'[]'项

我们目前使用的(丑陋的)解决方案是存储一个带有“EMPTY-ITEM”项的单项列表,并在我们读取该列表时进行检查。

有什么想法吗?

谢谢

最佳答案

Redis 中不存在空列表——一个列表必须有一个或多个项目。空列表(例如弹出非空列表的结果)会自动删除。

关于python - Redis - 如何 RPUSH/LPUSH 一个空列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38288839/

相关文章:

magento - 社区版上的 CM Redis session 后端缓存

caching - 为什么流量层总是使用缓存?

asp.net - 缓存大量数据

azure - 如何在环境之间共享Azure Redis缓存?

Spring 数据 RedisTemplate : Serializing the Value and HashValue

python - 如何在python yaml文件中输出空白值

python - python 中的 Cron 解析器和验证

asp.net - 是否可以在 Web 服务中使用缓存?

python - 按特定顺序生成元组列表

python - 使用 SQLAlchemy 在 PostgreSQL 中创建函数和触发器