Redis内存使用情况,ZSET和Docker

我在Docker(官方图像)上有一个redis实例(3.2),除了我每秒启动的脚本,在ZSET中排除潜在的项目外,这个实例几乎没有使用。 这是我的脚本:

local latestSchedule = redis.call('ZRANGEBYSCORE', KEYS[1], '-inf', 123456789, 'LIMIT', '0', '1') if latestSchedule[1] == nil then return nil end redis.call('ZREM', KEYS[1], latestSchedule[1]) return latestSchedule[1] 

即使这个ZSET大部分时间都是空的,Redis正在占用更多的内存,高达128MB,直到它重新启动并再次上升。

我错过了什么吗? redis的内存使用量通常会增长而不做任何事情吗? 我的脚本不适合从ZSET中排队吗? 我应该看别的地方吗?

按照Karthikeyan Gopall的要求,这是INFO,在它达到128MB之前:

 # Server redis_version:3.2.0 redis_git_sha1:00000000 redis_git_dirty:0 redis_build_id:5382f69a4e75566b redis_mode:standalone os:Linux 3.16.0-4-amd64 x86_64 arch_bits:64 multiplexing_api:epoll gcc_version:4.9.2 process_id:1 run_id:4e22b73f22436677376b4d097746c2a30ba2b9bc tcp_port:6379 uptime_in_seconds:21140 uptime_in_days:0 hz:10 lru_clock:6816977 executable:/data/redis-server config_file: # Clients connected_clients:5 client_longest_output_list:0 client_biggest_input_buf:0 blocked_clients:0 # Memory used_memory:33392560 used_memory_human:31.85M used_memory_rss:125399040 used_memory_rss_human:119.59M used_memory_peak:33473544 used_memory_peak_human:31.92M total_system_memory:1787236352 total_system_memory_human:1.66G used_memory_lua:67447808 used_memory_lua_human:64.32M maxmemory:134217728 maxmemory_human:128.00M maxmemory_policy:noeviction mem_fragmentation_ratio:3.76 mem_allocator:jemalloc-4.0.3 # Persistence loading:0 rdb_changes_since_last_save:162 rdb_bgsave_in_progress:0 rdb_last_save_time:1466413629 rdb_last_bgsave_status:ok rdb_last_bgsave_time_sec:-1 rdb_current_bgsave_time_sec:-1 aof_enabled:1 aof_rewrite_in_progress:0 aof_rewrite_scheduled:0 aof_last_rewrite_time_sec:-1 aof_current_rewrite_time_sec:-1 aof_last_bgrewrite_status:ok aof_last_write_status:ok aof_current_size:1039856 aof_base_size:0 aof_pending_rewrite:0 aof_buffer_length:0 aof_rewrite_buffer_length:0 aof_pending_bio_fsync:0 aof_delayed_fsync:0 # Stats total_connections_received:21174 total_commands_processed:339098 instantaneous_ops_per_sec:10 total_net_input_bytes:34329347 total_net_output_bytes:11702705 instantaneous_input_kbps:0.96 instantaneous_output_kbps:0.14 rejected_connections:0 sync_full:0 sync_partial_ok:0 sync_partial_err:0 expired_keys:24 evicted_keys:0 keyspace_hits:200 keyspace_misses:84628 pubsub_channels:0 pubsub_patterns:0 latest_fork_usec:0 migrate_cached_sockets:0 # Replication role:master connected_slaves:0 master_repl_offset:0 repl_backlog_active:0 repl_backlog_size:1048576 repl_backlog_first_byte_offset:0 repl_backlog_histlen:0 # CPU used_cpu_sys:27.75 used_cpu_user:21.72 used_cpu_sys_children:0.00 used_cpu_user_children:0.00 # Cluster cluster_enabled:0 # Keyspace db0:keys=47,expires=47,avg_ttl=17584379 

刚刚重启时:

 # Server redis_version:3.2.0 redis_git_sha1:00000000 redis_git_dirty:0 redis_build_id:5382f69a4e75566b redis_mode:standalone os:Linux 3.16.0-4-amd64 x86_64 arch_bits:64 multiplexing_api:epoll gcc_version:4.9.2 process_id:1 run_id:4e22b73f22436677376b4d097746c2a30ba2b9bc tcp_port:6379 uptime_in_seconds:21140 uptime_in_days:0 hz:10 lru_clock:6816977 executable:/data/redis-server config_file: # Clients connected_clients:5 client_longest_output_list:0 client_biggest_input_buf:0 blocked_clients:0 # Memory used_memory:33392560 used_memory_human:31.85M used_memory_rss:125399040 used_memory_rss_human:119.59M used_memory_peak:33473544 used_memory_peak_human:31.92M total_system_memory:1787236352 total_system_memory_human:1.66G used_memory_lua:67447808 used_memory_lua_human:64.32M maxmemory:134217728 maxmemory_human:128.00M maxmemory_policy:noeviction mem_fragmentation_ratio:3.76 mem_allocator:jemalloc-4.0.3 # Persistence loading:0 rdb_changes_since_last_save:162 rdb_bgsave_in_progress:0 rdb_last_save_time:1466413629 rdb_last_bgsave_status:ok rdb_last_bgsave_time_sec:-1 rdb_current_bgsave_time_sec:-1 aof_enabled:1 aof_rewrite_in_progress:0 aof_rewrite_scheduled:0 aof_last_rewrite_time_sec:-1 aof_current_rewrite_time_sec:-1 aof_last_bgrewrite_status:ok aof_last_write_status:ok aof_current_size:1039856 aof_base_size:0 aof_pending_rewrite:0 aof_buffer_length:0 aof_rewrite_buffer_length:0 aof_pending_bio_fsync:0 aof_delayed_fsync:0 # Stats total_connections_received:21174 total_commands_processed:339098 instantaneous_ops_per_sec:10 total_net_input_bytes:34329347 total_net_output_bytes:11702705 instantaneous_input_kbps:0.96 instantaneous_output_kbps:0.14 rejected_connections:0 sync_full:0 sync_partial_ok:0 sync_partial_err:0 expired_keys:24 evicted_keys:0 keyspace_hits:200 keyspace_misses:84628 pubsub_channels:0 pubsub_patterns:0 latest_fork_usec:0 migrate_cached_sockets:0 # Replication role:master connected_slaves:0 master_repl_offset:0 repl_backlog_active:0 repl_backlog_size:1048576 repl_backlog_first_byte_offset:0 repl_backlog_histlen:0 # CPU used_cpu_sys:27.75 used_cpu_user:21.72 used_cpu_sys_children:0.00 used_cpu_user_children:0.00 # Cluster cluster_enabled:0 # Keyspace db0:keys=47,expires=47,avg_ttl=17584379 

你的理解是错误的。 这里maxmemory_human:128.00M意味着最大的内存redis可以根据你的configuration(你可以在redis.conf文件中改变这个值,你的当前值是134217728字节,即128 MB)。 如果你的内存使用超出了这个范围,redis会根据你的驱逐策略( maxmemory_policy:noviction )开始抛出内存错误

您需要查看redis使用的当前内存的used_memory_human:31.85M

 # Keyspace db0:keys=47,expires=47,avg_ttl=17584379 

在你的服务器中有46个以上的密钥,我想这是一个正常的内存。

您可以在此链接http://redis.io/commands/INFO中的info命令中查看有关每个值的更多详细信息。

希望这可以帮助。