gpt4 book ai didi

caching - 在 Openstack Keystone 中使用 Redis,redis 中的一些垃圾

转载 作者:IT王子 更新时间:2023-10-29 06:13:27 24 4
gpt4 key购买 nike

最近,我正在使用 Redis 缓存 OpenStack Keystone 的 token 。功能没问题,但是Redis中还有一些过期的缓存数据。

我的 Keystone 配置:

[cache]
enabled=true
backend=dogpile.cache.redis
backend_argument=url:redis://127.0.0.1:6379

[token]
provider = uuid
caching=true
cache_time= 3600
driver = kvs
expiration = 3600

但是Redis中有一些过期的数据:数据已过期,但仍在此处,因为 TTL 为 -1。

我的问题:

  1. 如何更改设置以停止创建这些垃圾数据?
  2. 是否有一些优雅的方式来清理它?
    • 我试图使用命令“keystone-manage token_flush”,但在阅读代码后,我意识到这个命令只是清理 Mysql 中的过期 token

最佳答案

我希望这个问题仍然有意义。

我正在尝试做与您相同的事情,目前我发现唯一可行的选择是关于 dogpile.cache.redis 的参数:redis_expiration_time。检查后端 dogpile.redis API 或源代码。 http://dogpilecache.readthedocs.io/en/latest/api.html#dogpile.cache.backends.redis.RedisBackend.params.redis_expiration_time

此参数的唯一问题是它不允许您为不同的类别选择不同的 TTL,例如,您需要 10 分钟的 token 和 24 小时左右的目录。根据我的经验,keystone.conf 上的其他参数不起作用(每个类别的 expiration_time 和 cache_time)...无论如何,如果您使用 redis 仅存储 keystone token ,则此问题无关紧要。

[cache] 
enabled=true
backend=dogpile.cache.redis
backend_argument=url:redis://127.0.0.1:6379
// Add this line
backend_argument=redis_expiration_time:[TTL]

只需将 [TTL] 替换为您想要的 ttl,您就会开始注意到 redis 中带有 ttl 的键,过一会儿您会发现它们不再存在。

关于第二个问题:

这可能不是您看到的最佳答案,但您可以在 redis-cli 上使用 OBJECT idletime [key] 命令来查看特定 key 未使用的时间(甚至GET 重置空闲时间)。您可以使用一个简单的脚本删除空闲时间大于 token 撤销的 key 。

请记住,Redis 上的数据不是持久数据,这意味着您始终可以使用 FLUSHALL,并且您的 OpenStack 和 keystone 将照常工作,但第一次身份验证需要更长的时间。

关于caching - 在 Openstack Keystone 中使用 Redis,redis 中的一些垃圾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43466631/

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