默认为0,没有指定最大缓存,如果有新的数据添加,超过最大内存,则会使redis崩溃。
进入redis服务器,可通过redis的info命令查看当前reids状态:
# Server 服务器的相关信息,一般不太需要关注
redis_version:3.2.12
#Git SHA1
redis_git_sha1:00000000
#Git dirty flag
redis_git_dirty:0
redis_build_id:3dc3425a3049d2ef
#运行模式,单机或者集群
redis_mode:standalone
#服务器的宿主操作系统
os:Linux 3.10.0-862.11.6.el7.x86_64 x86_64
#架构(32 或 64 位)
arch_bits:64
#Redis 所使用的事件处理机制
multiplexing_api:epoll
gcc_version:4.8.5
#服务器进程的 PID
process_id:28752
run_id:af5da008ce67381f7f2a0560b7c10b83c674d333
tcp_port:6379
uptime_in_seconds:8594
#自 Redis 服务器启动以来,经过的天数
uptime_in_days:0
hz:10
lru_clock:15519130
executable:/./bin/redis-server
config_file:/etc/redis.conf
# Clients 客户端
#当前客户端连接数
connected_clients:2
#当前连接的客户端当中,最长的输出列表
client_longest_output_list:0
# 当前连接的客户端当中,最大输入缓存
client_biggest_input_buf:0
#被阻塞的客户端数
blocked_clients:0
conf相关配置:
maxclients 5000
tcp-backlog 500 #TCP 监听的最大容纳数量 默认511
# Memory
#使用内存,以字节(byte)为单位
used_memory:849640
#以人类可读的格式返回 Redis 分配的内存总量
used_memory_human:829.73K
#系统给redis分配的内存即常驻内存,和top 、 ps 等命令的输出一致
used_memory_rss:2744320
#以人类可读的格式返回系统给redis分配的内存即常驻内存,和top 、 ps 等命令的输出一致
used_memory_rss_human:2.62M
#内存使用的峰值大小
used_memory_peak:885576
#以人类可读的格式返回 Redis 的内存峰值
used_memory_peak_human:864.82K
total_system_memory:16657358848
total_system_memory_human:15.51G
#lua引擎使用的内存
used_memory_lua:46080
used_memory_lua_human:45.00K
#Redis实例的最大内存配置
maxmemory:3000000000
maxmemory_human:2.79G
maxmemory_policy:volatile-lru
#redis 内存碎片率
mem_fragmentation_ratio:3.23
#内存分配器
mem_allocator:jemalloc-3.6.0
# Persistence
loading:0
#自上次dump后rdb的改动
rdb_changes_since_last_save:0
#标识rdb save是否进行中
rdb_bgsave_in_progress:0
#上次save的时间戳
rdb_last_save_time:1559021527
#上次的save操作状态
rdb_last_bgsave_status:ok
#上次rdb save操作使用的时间(单位s)
rdb_last_bgsave_time_sec:0
#如果rdb save操作正在进行,则是所使用的时间
rdb_current_bgsave_time_sec:-1
#是否开启aof,默认没开启(未开启)
aof_enabled:0
#标识aof的rewrite操作是否在进行中
aof_rewrite_in_progress:0
#标识是否将要在rdb save操作结束后执行
aof_rewrite_scheduled:0
#上次rewrite操作使用的时间(单位s)
aof_last_rewrite_time_sec:-1
#如果rewrite操作正在进行,则记录所使用的时间
aof_current_rewrite_time_sec:-1
#上次rewrite操作的状态
aof_last_bgrewrite_status:ok
#上次write操作的状态
aof_last_write_status:ok
#aof当前大小,以字节(byte)为单位
aof_current_size:42820373
#aof上次启动或rewrite的大小
aof_base_size:16223723
#同上面的aof_rewrite_scheduled
aof_pending_rewrite:0
#aof buffer的大小
aof_buffer_length:0
#aof rewrite buffer的大小
aof_rewrite_buffer_length:0
#后台IO队列中等待fsync任务的个数
aof_pending_bio_fsync:0
#延迟的fsync计数器 TODO
aof_delayed_fsync:41394
# Stats
#自启动起连接过的总数
total_connections_received:28
#自启动起运行命令的总数
total_commands_processed:522
#每秒执行的命令个数
instantaneous_ops_per_sec:0
#redis网络入口流量字节数
total_net_input_bytes:29487
#redis网络出口流量字节数
total_net_output_bytes:242381
#redis网络入口kps
instantaneous_input_kbps:0.00
#redis网络出口kps
instantaneous_output_kbps:0.00
#因为最大客户端连接书限制,而导致被拒绝连接的个数
rejected_connections:0
#主从完全同步成功次数
sync_full:0
#主从部分同步成功次数
sync_partial_ok:0
#主从部分同步失败次数
sync_partial_err:0
#自启动起过期的key的总数
expired_keys:2
#因为内存大小限制,而被驱逐出去的键的个数
evicted_keys:0
#自启动起命中key的个数
keyspace_hits:301
#自启动起未命中key的个数
keyspace_misses:47
pubsub_channels:0
pubsub_patterns:0
#上次的fork操作使用的时间(单位ms)
latest_fork_usec:225
migrate_cached_sockets:0
# Replication
#角色(主从)
role:master
#从库数量
connected_slaves:0
#主从同步偏移量,此值如果和上面的offset相同说明主从一致没延迟,与master_replid可被用来标识主实例复制流中的位置。
master_repl_offset:0
#复制积压缓冲区是否开启
repl_backlog_active:0
#复制积压缓冲大小
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
# CPU
#cpu在内核态所消耗的cpu的时间
used_cpu_sys:5.53
#cpu在用户态所消耗的cpu的时间
used_cpu_user:3.71
#将后台进程在核心态所占用的CPU时求和累计起来
used_cpu_sys_children:0.01
#将后台进程在用户态所占用的CPU时求和累计起来
used_cpu_user_children:0.00
# Cluster
#实例是否启用集群模式
cluster_enabled:0
# Keyspace
#db0的key的数量,以及带有生存期的key的数,平均存活时间
db0:keys=21,expires=12,avg_ttl=423330898
内存设置换算:
1k => 1000 bytes
1kb => 1024 bytes
1m => 1000000 bytes
1mb => 1024*1024 bytes
1g => 1000000000 bytes
1gb => 1024*1024*1024 bytes
最大内存设置:maxmemory <bytes>
例:maxmemory 3000000000
设置最大值需注意的:
回收key 设置要maxmemory,切redis实例启用了rdb功能就需要将maxmemory设置为系统可使用内存的45%,因为快照时需要一倍的内存来复制整个数据集,也就是说如果当前已使用45%,在快照期间会变成95%(45%+45%+5%),其中5%是预留给其他的开销。如果没开启快照功能,maxmemory最高能设置为系统可用内存的95%。
网上有许多建议此值设置为3/4的服务器内存,我觉得这个可能是此服务器上没有部署其它消耗内存的java应用程序,否则还是根据实际情况,可通过top查看服务器的内存使用情况,如果其它进程长期占用比较大的份额,建议此值不要累积至百分百。
回收策略设置:设置了最大内存,建议配合缓存回收策略使用
maxmemory-policy 策略方式
策略方式:
volatile-lru -> 回收最近最少使用(LRU)的键,但是只回收有设置过期的键,为新数据腾出空间;
allkeys-lru -> 回收最近最少使用(LRU)的键,为新数据腾出空间;
volatile-random -> 回收随机的键,但是只回收有设置过期的键,为新数据腾出空间;
allkeys-random -> 回收随机的键,为新数据腾出空间;
volatile-ttl -> 回收有设置过期的键,尝试先回收离TTL最短时间的键,为新数据腾出空间;
noeviction -> 禁止淘汰数据,当到达内存限制时返回错误。当客户端尝试执行命令时会导致更多内存占用(大多数写命令,除了DEL和一些例外)。
Redis最大缓存设置及info信息详解
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...