我们在Azure Standard 2.5gb
上有一个Redis缓存。我们观察到以下行为:
我们时不时地观察到内存使用量的大幅下降。似乎有大量资源被驱逐。
注意事项:
我的问题是,除了应用程序逻辑显式退出密钥之外,Redis是否还有其他情况会驱逐大量密钥?
答案 0 :(得分:7)
内存清除可能不代表驱逐。
您说“似乎”有大量资源在被驱逐,但是如果您只是依靠回收的内存来获得这种外观,则可能是在追赶幽灵。您是否检查过此图如何与Azure门户中可用的Total Keys
指标重叠?覆盖这两个系列应该可以使您了解内存回收确实是由于驱逐还是由于其他进程(例如Azure)可能在缓存实例上定期调用MEMORY PURGE进行清理脏页?
答案 1 :(得分:0)
您可以将重新部署驱逐策略更改为with
input(id, col, col_1, val, val_1) as (
select 1, 'ABC', 'DEF', 10, 20 from dual union all
select 2, 'GHI', 'JKL', 30, 40 from dual
)
select id, ord, c, v
from input
unpivot ( (c, v) for ord in ((col, val) as 1, (col_1, val_1) as 2))
;
ID ORD C V
---------- ---------- --- ----------
1 1 ABC 10
1 2 DEF 20
2 1 GHI 30
2 2 JKL 40
,看看是否可以解决您的问题吗?这样做意味着您将必须自己管理所有内容。 https://redis.io/topics/lru-cache有更多详细信息。