Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Redis内存不足,即使使用allkeys lru策略_Redis - Fatal编程技术网

Redis内存不足,即使使用allkeys lru策略

Redis内存不足,即使使用allkeys lru策略,redis,Redis,我有一台Redis服务器,具有maxmemory 512MB和maxmemory policy allkeys lru,但一旦服务器在使用一天后填满,我就不能再添加任何项目: redis 127.0.0.1:6379[3]> set foooo 123 (error) OOM command not allowed when used memory > 'maxmemory'. 我认为LRU政策永远不会发生这种情况 我将一些服务器信息复制到此Pasebin: 我怎样才能解决这个问题

我有一台Redis服务器,具有
maxmemory 512MB
maxmemory policy allkeys lru
,但一旦服务器在使用一天后填满,我就不能再添加任何项目:

redis 127.0.0.1:6379[3]> set foooo 123
(error) OOM command not allowed when used memory > 'maxmemory'.
我认为LRU政策永远不会发生这种情况

我将一些服务器信息复制到此Pasebin:

我怎样才能解决这个问题

注意:我正在尝试使用
maxmemory
,因为我的Redis服务器在不断消耗内存,即使几乎所有的密钥都有过期设置,而且
FLUSHDB
不会释放系统内存-这可能是相关的


最后,我尝试使用Redis作为缓存。

您的
info
输出表明您服务器的大量内存被Lua脚本占用:

used_memory_lua:625938432

请注意,Lua脚本将保留在内存中,直到服务器重新启动或调用。看起来好像您正在动态生成Lua脚本…

似乎这就是问题所在,谢谢。我不知道
eval()
脚本在执行后会保存在内存中。RTFM;)“执行的脚本保证永远在Redis实例的给定执行的脚本缓存中。”-是的,你是对的,但这是12页,看起来很简单,而且其他语言都知道(许多语言实现
eval
,但我不知道还有其他语言将代码存储在内存中…)魔鬼在细节中-很高兴为你解决了这个问题。顺便说一句,您是否正在动态生成脚本?我想不出Lua缓存变得这么大的另一个原因了。很好。或者,您仍然可以对其求值,但请确保将键名作为参数传递给“静态”脚本。