Redis最大缓存设置及info信息详解

本文详细探讨了Redis的最大缓存配置以及如何解析info信息,帮助读者深入理解Redis的缓存管理和监控。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

默认为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和一些例外)。

更多文章:
点击跳转优快云博客
点击跳转简书博客
公众号:代码小搬运
代码小搬运.jpg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值