一、redis server管理连接redis客户端的命令

1、查看与redis服务端相连的所有客户端的连接信息

查看命令:client list

# 查看连接当前redis的所有客户端
127.0.0.1:6379> CLIENT list
id=3 addr=127.0.0.1:35878 fd=5 name= age=75 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=client
id=4 addr=192.168.16.128:48120 fd=6 name= age=68 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=30 omem=529848 events=r cmd=keys
id=5 addr=192.168.16.128:48124 fd=7 name= age=51 idle=48 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=keys
id=6 addr=127.0.0.1:35880 fd=8 name= age=0 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=NULL

客户端信息说明:

(1)客户的基本标识信息

id:客户端连接的唯一标识,这个id随着redis的连接自增的,重启redis后重置为0

add:客户端连接的ip和端口

fd:socket的文件描述符

name:客户端的名字,可以更改

(2)输入缓存区信息:qbuf(总容量)、qbuf-free(剩余容量)

输入缓存区的作用是将客户端发送的命令临时保存,redis会从输入缓存区拉取命令并执行,输入缓存取得大小会根据输入内容的大小不同动态调整,但会要求每个客户端的大小不能超过1g,超过后客户端将被关闭。

输入缓存区的监控与优化:

输入缓存区大小不受maxmemory,如果输入缓存区加redis使用的内存大小超过了maxmemory的限制可能会导致数据丢失、键值淘汰、OOM情况的发生。对此可以监控输入缓存区。

监控命令:client list

Info clients

# 使用info监控clients, client_biggest_input_buf代表最大的输入缓存区
127.0.0.1:6379> INFO clients
# Clients
connected_clients:4
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0

(3)输出缓存区:obl(固定缓存区长度)、oll(动态缓存区长度)、omem(使用的字节数)

输出缓存区的作用是保存命令执行的结果返回给客户端、为redis和客户端交互返回结果提供缓存。相对于输入缓存区,输出缓存区的大小可以设置(通过参数cllient-output-buffer-limit设置);输出缓存区的客户端分为三种(普通客户端、发布订阅客户端、slave客户端)。

输出缓存区由固定输出缓存区(为16kb,返回比较小的执行结果,使用的是字节数组)和动态缓存区(返回大的结果,使用的事列表)组成,固定缓存区慢后会将redis新的返回结果存放在动态缓存区的队列中,队列中的每个对象就是每个返回结果。

输出缓存区的监控同输入缓存区,其中” client_longest_output_list”代表输出缓存区列表最大的对象数。

(4)客户端的存活状态

age:客户端连接时间

idle:客户端最近一次空闲时间。

(5)客户端的类型

Flag用于表示当前客户端的类型,常见的客户端类型如下:

N:普通客户端

M:当前客户端是master节点

S:当前客户端是slave节点

o:当前客户端正在执行monitor命令

x:当前客户端正在执行事务

b:当前客户端正在等待阻塞事件

u:客户端未被阻塞

c:回复完整输出后,关闭连接

A:尽可能快的关闭连接

(6)其他的参数说明

db:当前客户端正在使用的数据库的索引下标

multi:当前事务中已执行命令个数

events:文件描述符事件,r和w分别代表客户端套接字可读和可写

cmd:当前客户端最后一次执行的命令

2、获取连接客户端的名称和修改客户端的名称

修改连接客户端的名称:CLIENT SETNAME

获取连接客户端的名臣:CLIENT GETNAME

# 修改当前连接的客户端的名称
192.168.16.129:6379> CLIENT SETNAME dayi123
OK
# 获取当前连接的客户端的连接
192.168.16.129:6379> CLIENT GETNAME
"dayi123"

3、杀死连接的客户端

命令:CLIENT KILL

# 杀死客户端127.0.0.1:3587
192.168.16.129:6379> CLIENT KILL 127.0.0.1:35878
OK

4、阻塞客户端

命令:CLIENT PAUSE timeout(毫秒)

# 阻塞客户端10秒
192.168.16.129:6379> CLIENT PAUSE 10000
OK

Clinet pause只对普通和发布订阅客户端有效,对于主从复制是无效的。

5、监控redis正在执行的命令

命令:MONITOR

# 监控redis正在执行的命令
192.168.16.129:6379> MONITOR
OK
1532152182.921718 [0 127.0.0.1:35880] "ping"
1532152189.738998 [0 127.0.0.1:35880] "DBSIZE"

二、redis服务对客户端连接的相关配置

1timeout

检测客户端空闲连接的超时时间,默认timeout=0。

2maxclients

客户端最大的连接数,默认为10000

3tcp-keepalive

检测tcp连接活性的周期,默认值为0,建议设置为60,redis会在设定的时期内对它创建的tcp进行活性的检测,防止大量的连接占用系统资源。

4tcp-backlog

用来设置tcp连接队列的大小,默认值为511,这个参数会受到操作系统的影响。

管理连接redis server的客户端相关推荐

  1. Redis server went away

    原因1:可能是redis server没有启动. 原因2:可能是连接redis server的配置信息不正确,例如 IP地址 和 端口号:

  2. [ 搭建Redis本地服务器实践系列三 ] :图解Redis客户端工具连接Redis服务器

    原文:[ 搭建Redis本地服务器实践系列三 ] :图解Redis客户端工具连接Redis服务器 上一章 [ 搭建Redis本地服务器实践系列二 ] :图解CentOS7配置Redis  介绍了Red ...

  3. 使用RedisDesktopManager客户端无法连接Redis服务器问题解决办法

    使用RedisDesktopManager客户端无法连接Redis服务器问题解决办法 参考文章: (1)使用RedisDesktopManager客户端无法连接Redis服务器问题解决办法 (2)ht ...

  4. Redis进阶-JedisCluster初始化 自动管理连接池中的连接 _ 源码分析

    文章目录 Pre Code 初始化 槽计算 无需手工调用close方法 Pre Redis进阶-Redis集群原理剖析及gossip协议初探 集群原理部分 简单的提了下Jest是如何实现Redis C ...

  5. JAVA连接Redis客户端多种方式实现

    Jedis介绍 Redis不仅使用命令来操作,而且可以使用程序客户端操作.现在基本上主流的语言都有客户端支持,比如java.C.C#.C++.php.Node.js.Go等. 在官方网站里列一些Jav ...

  6. php连接redis出现Redis server went away

    出现这个问题的描述: phpredis的版本是:phpredis-2.2.4.zip redis的版本是:redis-2.8.6.tar.gz linux的版本是:Linux 2.6.32-71.el ...

  7. php redis redis server went away,php连接redis出现Redis server went away,rediswent

    php连接redis出现Redis server went away,rediswent 出现这个问题的描述: phpredis的版本是:phpredis-2.2.4.zip redis的版本是:re ...

  8. Navicat 连接SQL Server ERROR [IM002] [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序

    Navicat 连接SQL Server ERROR [IM002] [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序 和能成功连接数据库的环境对比,发现少了 ...

  9. Redis 常用可视化客户端管理软件

    一.引言 现在开发过程中使用Redis的地方越来越多了,而且使用过程中,我们需要可能需要查看下Redis数据,但是命令行使用起来比较麻烦而且看起来不直观,当数据量比较多就比较麻烦,没可视化客户端看起来 ...

最新文章

  1. [Beta]第五次 Scrum Meeting
  2. win10 看不到其它计算机,w10网上邻居搜索不到其它电脑怎么办
  3. 请求转发与重定向的区别和执行流程
  4. 如何修改Vs2008环境变量
  5. 什么是pisa测试_PISA测试排名世界第一,中国教育已是世界冠军?
  6. python单向循环链表_python实现单向循环链表 -- 详细思路分析
  7. python怎么打开程序管理器_python进程管理工具supervisor的安装与使用教程
  8. 全面学习 Python 包,你 Get 了吗?
  9. 【安全狐】robots协议详解(robots.txt)
  10. javaweb调用qq认证登录接口
  11. 关于萨蒂亚·纳德拉安全演讲你所要知道的
  12. 如何录制英雄联盟 (LoL) 游戏视频
  13. 使用SpriteAtlas打包图集并显示
  14. dwm.exe(桌面窗口管理器)占用内存过大解决办法
  15. 使用 PSCP将文件从 Windows 计算机快速传输到 Linux计算机
  16. 为陶崇园争取正义懒人包1.0
  17. 目标检测与位姿估计(五):A Survey: Visual Place Recognition
  18. 高斯消元法(C++实现)
  19. PowerBI如何注册
  20. 分享一个阿里云开源的流程图-g6

热门文章

  1. Whale News | 帷幄 CEO 叶生晅入围36氪「X·36Under36」榜单
  2. TypeError: can‘t convert cuda:0 device type tensor to numpy. Use Tensor.cpu() to copy the tensor to
  3. 【财富空间】人品,是最好的底牌
  4. 解决springboot上传图片无法显示问题
  5. 各种网客平台纷纷兴起,你进入到哪个网客领域了?
  6. 假如贸易条件为1单位计算机换22单位小麦,请哪位强人帮我解答下有关国际贸易的一道题...
  7. 中国股神—林园炒股秘籍
  8. DX10.1与DX10的简述
  9. Java基础学习笔记(十九)—— 多线程(1)
  10. 【动画】css实现旋转和平移效果