Redis客户端操作

痞子三分冷 提交于 2020-08-07 17:30:22

client list客户端相关信息:

  1. fd: socket文件描述符
  2. qbuf: 输入缓冲区(作用:临时存储客户端发送的命令)
  3. obl(固定缓冲区,使用字节数组)、oll(动态缓冲区,使用列表)、omen(使用的字节数)输出缓冲区(作用:保存命令执行的结果返回给客户端)

注:

  • 单个客户端输入缓冲区大小超过1G会被关闭。
  • 输出缓冲区:<class> 客户端分为三种类型,分别为普通客户端、slave客户端、发布订阅客户端。
  • 输出缓冲区:<hard limit> 输出缓冲区大小大于该值会立刻关闭。
  • 输出缓冲区:<soft limit>和<soft seconds> 输出缓冲区大小大于soft limit并持续soft seconds秒,会被关闭。
  • 缓冲区+内存存储量超过maxmemory会出现数据丢失、键淘汰及OOM现象。通过client list或info client进行问题排查。

客户端相关配置:

  • config set maxclients:动态设置客户端最大连接数
  • config set timeout 30:当idle超过timeout,客户端会被关闭
  • client kill ip:port:杀掉指定ip地址和端口的客户端
  • client pause timeout:阻塞客户端timeout毫秒数
  • monitor:用于监控Redis正在执行的指令,能监听所有命令,并发量大时输出缓冲区暴涨,可能产生内存大量使用的问题
  • keep-alive:TCP活性检测,防止撕资源占用活连接
  • keep-backlog:完成TCP三次握手的连接队列大小

客户端异常:

  1. 无法从连接池获取连接
    • 连接池设置过小,供不应求
    • 连接池未正确释放
    • 慢查询较多造成归还较慢,产生的池子慢了现象
    • 服务端异常
  2. 客户端读写超时
    • 读写超时时间设置的过短
    • 命令本身就慢
    • 客户端与服务端间网络不佳
    • Redis自身发生阻塞
  3. 客户端连接超时
    • 连接超时时间设置过短
    • Redis发生阻塞,造成tcp-backlog满,新的连接失败
    • 客户端与服务端网络不正常
  4. 客户端缓冲区异常
    • 输出缓冲区满
    • 长时间闲置的连接被服务区主动断开
    • 不正常并发读写,Jedis对象被多个线程并发操作
  5. Lua脚本正在执行
    • 正在执行Lua脚本,并超过了lua-time-limit
  6. Redis正在加载持久化文件
    • Jedis调用Redis时,Redis在加载持久化文件会抛出异常
  7. Redis使用内存超过maxmemory
    • Jedis执行写操作时,Redis使用内存大于maxmemory的设置,此时需要具体分析原因
  8. 客户端连接数过大
    • 客户端连接数超过maxclients,就会出现此异常
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!