一、环境
centOS7.6
redis5.0.7
二、命令
https://segmentfault.com/a/1190000010999677#item-0-1
https://www.cnblogs.com/javastack/p/9854489.html
http://einverne.github.io/post/2017/04/redis-command.html
三、常用排错命令
查询最大的键
redis-cli --bigkeys
查询内存交互最大的键
redis-cli --memkeys
查询最长用到的键(redis.conf中的maxmemory-policy参数设置为volatile-lfu或allkeys-lfu)
redis-cli --hotkeys
查询redis内存使用信息
查询redis最近连接数的一些指标,几个重要指标如下
redis-cli client list
-age: 链接的存活时长 -idl: 链接的空闲时长 -qbuf: 客户端的缓冲区的容量 -qbuf-free: 缓冲区的空闲容量
Redis为每个客户端分配了输入缓冲区,它的作用是将客户端发送的命令临时保存,同时Redis从会输入缓冲区拉取命令并执行,输入缓冲区为客户端发送命令到Redis执行命令提供了缓冲功能,如图4-5所示。
client list中qbuf和qbuf-free分别代表这个缓冲区的总容量和剩余容量,Redis没有提供相应的配置来规定每个缓冲区的大小,输入缓冲区会根据输入内容大小的不同动态调整,只是要求每个客户端缓冲区的大小不能超过1G,超过后客户端将被关闭
INFO命令 https://www.huangdc.com/337
redis-cli info server :一般 Redis 服务器信息
redis_version : Redis 服务器版本 redis_git_sha1 : Git SHA1 redis_git_dirty : Git dirty flag os : Redis 服务器的宿主操作系统 arch_bits : 架构(32 或 64 位) multiplexing_api : Redis 所使用的事件处理机制 gcc_version : 编译 Redis 时所使用的 GCC 版本 process_id : 服务器进程的 PID run_id : Redis 服务器的随机标识符(用于 Sentinel 和集群) tcp_port : TCP/IP 监听端口 uptime_in_seconds : 自 Redis 服务器启动以来,经过的秒数 uptime_in_days : 自 Redis 服务器启动以来,经过的天数 lru_clock : 以分钟为单位进行自增的时钟,用于 LRU 管理
redis-cli info clients:已连接客户端信息
connected_clients : 已连接客户端的数量(不包括通过从属服务器连接的客户端)
client_longest_output_list : 当前连接的客户端当中,最长的输出列表
client_longest_input_buf : 当前连接的客户端当中,最大输入缓存
blocked_clients : 正在等待阻塞命令(BLPOP、BRPOP、BRPOPLPUSH)的客户端的数量
redis-cli info memory:内存信息
used_memory : 由 Redis 分配器分配的内存总量,以字节(byte)为单位 used_memory_human : 以人类可读的格式返回 Redis 分配的内存总量 used_memory_rss : 从操作系统的角度,返回 Redis 已分配的内存总量(俗称常驻集大小)。这个值和 top 、 ps 等命令的输出一致。 used_memory_peak : Redis 的内存消耗峰值(以字节为单位) used_memory_peak_human : 以人类可读的格式返回 Redis 的内存消耗峰值 used_memory_lua : Lua 引擎所使用的内存大小(以字节为单位) mem_fragmentation_ratio : used_memory_rss 和 used_memory 之间的比率 mem_allocator : 在编译时指定的, Redis 所使用的内存分配器。可以是 libc 、 jemalloc 或者 tcmalloc 。
在理想情况下, used_memory_rss 的值应该只比 used_memory 稍微高一点儿。 当 rss > used ,且两者的值相差较大时,表示存在(内部或外部的)内存碎片。 内存碎片的比率可以通过 mem_fragmentation_ratio 的值看出。 当 used > rss 时,表示 Redis 的部分内存被操作系统换出到交换空间了,在这种情况下,操作可能会产生明显的延迟。
redis-cli info stats:查询redis最近的一些指标,包含总连接数、总命令数、瞬时命令数、总流入、流出字节、命中、过期。
redis-cli --stat:redis的一些实时变化。
redis-cli monitor:redis的实时命令打印。
redis-cli info persistence : RDB 和 AOF 的相关信息
redis-cli info replication : 主/从复制信息
redis-cli info cpu : CPU 计算量统计信息
redis-cli info commandstats : Redis 命令统计信息
redis-cli info cluster : Redis 集群信息
redis-cli info keyspace : 数据库相关的统计信息
四、redis.conf 文件的一些配置说明
五、redis和linux内存之间的一些优化
六、redis内存详解
https://juejin.im/post/5da5dc5851882520233f65c5
七、一些补充
- Redis 非常快,每秒可执行大约 110000 次的设置(SET)操作,每秒大约可执行 81000 次的读取/获取(GET)操作。运行命令
redis-benchmark -n 100000 -q
来检测本地同时执行 10 万个请求时的性能。 - aa
其它参考: