你好吗?
我现在使用
memcached
有一段时间了并且喜欢它。
在缓存后面,我通常使用 Postgress
或任何关系数据库。
在某些情况下使用缓存会使事情变得复杂。我不确定这些情况的性能成本。所以最好在这里问。
想象一下我有两个 API 的情况
def all(filter_1: int = None, filter_2: int = None, filter_3: int = None)
过滤所有结果。def update(id, data: dict)
(更新单个项目)on
all
我将缓存结果,例如:
all()
CACHE_KEY_ALL
。all(filter_1=11)
.CACHE_KEY_ALL_filter_1_11
。all(filter_1=11, filter_3=three)
CACHE_KEY_ALL_filter_1_11_filter_3_three
在每次
update
通话时,我都需要清除所有 all
缓存项目的缓存。
我今天所做的,在这种情况下我只是不使用任何缓存。
我的问题是性能问题。
什么更快
stats items
获取所有密钥。查找以 CACHE_KEY_ALL
开头的键并使每个键无效你觉得怎么样?
🙏
我过得很好希望你也过得好。
首先,我想指出函数的命名。函数名称应该包含动词,因为这使它们更具可读性。我对 all() 命名有点困惑,所以如果您可以在函数名称中使用一些动词,这对其他开发人员来说会更好。
关于缓存问题,乍一听,使用缓存时确实涉及到更多操作。然而,所有这些操作可能仍然比调用 API 更快。因此,是否值得实现缓存的问题完全取决于(在我看来)该特定 API 是否足够快。我无权访问该 API,因此我无法明确告诉您哪个比另一个更快。
希望我的回答有帮助。