一尘不染

带Resque和Rails的Redis:当使用的内存>'maxmemory'时,不允许使用ERR命令

redis

使用redis时,出现错误:

ERR command not allowed when used memory > 'maxmemory'

info命令显示:

redis 127.0.0.1:6379> info
redis_version:2.4.10
redis_git_sha1:00000000
redis_git_dirty:0
arch_bits:64
multiplexing_api:kqueue
gcc_version:4.2.1
process_id:1881
uptime_in_seconds:116
uptime_in_days:0
lru_clock:1222663
used_cpu_sys:0.04
used_cpu_user:0.04
used_cpu_sys_children:0.00
used_cpu_user_children:0.00
connected_clients:1
connected_slaves:0
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0
used_memory:930912
used_memory_human:909.09K
used_memory_rss:1269760
used_memory_peak:931408
used_memory_peak_human:909.58K
mem_fragmentation_ratio:1.36
mem_allocator:libc
loading:0
aof_enabled:0
changes_since_last_save:4
bgsave_in_progress:0
last_save_time:1333432389
bgrewriteaof_in_progress:0
total_connections_received:1
total_commands_processed:2
expired_keys:0
evicted_keys:0
keyspace_hits:0
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:0
vm_enabled:0
role:master

用内存高吗?我是一个完整的Redis新手。如果是这样,怎么会出现此问题,我应该从这里继续进行吗?同一错误都在生产环境中出现(Heroku),因此,我们非常感谢您的帮助。谢谢。


阅读 354

收藏
2020-06-20

共1个答案

一尘不染

达到最大内存限制时,将返回此消息。您可以使用以下命令检查当前限制:

redis 127.0.0.1:6379> config get maxmemory
1) "maxmemory"
2) "128000000"

结果以字节为单位。

请注意,一个空的Redis实例使用大约710KB的内存(在Linux上),因此,如果您计划仅存储1MB的有用数据并实施此限制,则需要在maxmemory参数中设置1734K。在配置文件中,maxmemory设置以字节为单位,除非您使用K,M,G后缀。

Redis将所有内容存储在内存中(它永远不会将数据溢出到磁盘上),因此Resque队列的所有内容都必须适合。对于Resque引擎,几个MB似乎非常低。

您没有指定选择哪个Heroku选项,但我的理解是Redis To Go的“ nano”选项(免费)限制为5 MB。

2020-06-20