• 【Redis】常用命令、问题排查、内存优化


    一、环境

    centOS7.6

    redis5.0.7

    二、命令

    http://redisdoc.com/

    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 文件的一些配置说明

    https://help.aliyun.com/document_detail/43885.html?spm=a2c4g.11186623.2.18.4e8f3e59i0kxEo#concept-q1w-kxn-tdb

    五、redis和linux内存之间的一些优化

    https://cachecloud.github.io/2017/02/16/Redis%E7%9A%84Linux%E7%B3%BB%E7%BB%9F%E4%BC%98%E5%8C%96/#chapter3

    六、redis内存详解

    https://juejin.im/post/5da5dc5851882520233f65c5

    七、一些补充

    • Redis 非常快,每秒可执行大约 110000 次的设置(SET)操作,每秒大约可执行 81000 次的读取/获取(GET)操作。运行命令 redis-benchmark -n 100000 -q 来检测本地同时执行 10 万个请求时的性能。
    • aa

    其它参考:

    jedis常见错误汇总

    jedisPool资源池优化

    redis开发规范

    redis五种数据结构

  • 相关阅读:
    string::push_back()
    string::pop_back
    string::insert
    string::get_allocator
    opencv —— minEnclosingCircle、fitEllipse 寻找包裹轮廓的最小圆、点集拟合椭圆
    opencv —— boundingRect、minAreaRect 寻找包裹轮廓的最小正矩形、最小斜矩形
    opencv —— approxPolyDP 生成逼近曲线
    opencv —— convexHull 寻找并绘制凸包
    opencv —— findContours、drawContours 寻找并绘制轮廓
    opencv —— equalizeHist 直方图均衡化实现对比度增强
  • 原文地址:https://www.cnblogs.com/kbian/p/12360701.html
Copyright © 2020-2023  润新知