2012-04-03 28 views
22

Khi sử dụng redis, nó mang lại cho tôi những lỗi:Redis với Resque và Rails: lệnh ERR không cho phép khi sử dụng bộ nhớ> 'maxmemory'

ERR command not allowed when used memory > 'maxmemory' 

Lệnh thông tin tiết lộ:

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 

Is cao used_memory? Tôi là một redoo hoàn toàn noob. Nếu vậy, vấn đề này xảy ra như thế nào và tôi nên tiếp tục như thế nào từ đây? Lỗi này là tất cả xảy ra trong sản xuất (Heroku), vì vậy bất kỳ trợ giúp được đánh giá cao. Cảm ơn bạn.

Trả lời

29

Thư này được trả lại khi đạt đến giới hạn tối đa. Bạn có thể kiểm tra giới hạn hiện tại bằng cách sử dụng lệnh sau:

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

Kết quả tính theo byte. Xin lưu ý rằng một phiên bản Redis trống sử dụng khoảng 710KB bộ nhớ (trên Linux), vì vậy nếu bạn dự định chỉ lưu trữ 1MB dữ liệu hữu ích và thi hành giới hạn này, thì bạn cần đặt 1734K trong tham số maxmemory. Trong tệp cấu hình, cài đặt maxmemory bằng byte, trừ khi bạn sử dụng hậu tố K, M, G.

Redis lưu trữ tất cả mọi thứ trong bộ nhớ (nó không bao giờ làm tràn dữ liệu trên đĩa), vì vậy tất cả nội dung của hàng đợi Resque của bạn phải phù hợp. Một vài MB có vẻ rất thấp cho một động cơ Resque.

Bạn không chỉ định tùy chọn Heroku nào bạn đã chọn, nhưng sự hiểu biết của tôi là Redis To Go "nano" tùy chọn (giới hạn miễn phí) là 5 MB.

+0

Cảm ơn người đàn ông, chúng tôi chắc chắn cần thiết để nâng cấp của chúng tôi To Go tầng . – kmurph79

1

Great câu trả lời bằng cách Didier, đây chỉ là những bước để tăng nó:

redis-cli 
127.0.0.1:6379> config get maxmemory 
1) "maxmemory" 
2) "67108864" # (67mb) this will be different in your case 

này là làm thế nào để thay đổi nó:

127.0.0.1:6379> config set maxmemory 100mb 
OK 
127.0.0.1:6379> config set maxmemory-policy allkeys-lru 
OK 
127.0.0.1:6379> config get maxmemory 
1) "maxmemory" 
2) "104857600" 
Các vấn đề liên quan