使用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),因此,我们非常感谢您的帮助。谢谢。
达到最大内存限制时,将返回此消息。您可以使用以下命令检查当前限制:
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。