gpt4 book ai didi

caching - Redis缓存更新

转载 作者:IT王子 更新时间:2023-10-29 06:07:43 26 4
gpt4 key购买 nike

EDIT2:澄清:代码已经在未命中逻辑上刷新缓存。我正在尝试做的是减少错过缓存命中的次数。

我正在使用 Redis 作为 API 的缓存。这个想法是,当 API 收到调用时,它首先检查缓存,如果数据不在缓存中,API 将获取它并缓存它以备下次使用。

目前配置如下:

maxmemory 50mb
maxmemory-policy allkeys-lru

也就是说,最多使用 50mb 内存,不断尝试在其中尝试 key ,当内存已满时通过删除最近最少使用的 key (lru) 开始。

现在我想介绍第二类键。对于第二个类别,我将设置一个特定的到期时间。现在我想建立一种机制,当这些 key 到期时,该机制会启动并刷新它们(并设置新的到期时间)。

我该怎么做?

编辑:一些进展。事实证明,Redis 有一个 pub/sub 消息系统,特别是可以在事件上发送消息。其中之一是过期 key ,可以这样启用:

notify-keyspace-events Ex

我发现这段代码可以描述一个阻塞 python process subscribing to Redis' messaging system .它可以很容易地更改为检测 key 过期并在 key 过期时调用 API,然后 API 将刷新 key 。

def work(self, item):
requests.get('http://apiurl/?q={param}'.format(param=item['data']))

所以这正是我要问的。

通常,这感觉太危险且无法控制。我可以想象很多不同的情况,在这些情况下这会很快失败。

那么,什么是更好的解决方案?

最佳答案

http://redis.io/topics/notifications

Keyspace notifications allows clients to subscribe to Pub/Sub channels in order to receive events affecting the Redis data set in some way. Examples of the events that is possible to receive are the following:

All the keys expiring in the database 0. (e.g)

...

EXPIRE generates an expire event when an expire is set to the key, or a expired event every time setting an expire results into the key being deleted (see EXPIRE documentation for more info).

关于caching - Redis缓存更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31394739/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com