管理连接redis server的客户端
一、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服务对客户端连接的相关配置
1、timeout
检测客户端空闲连接的超时时间,默认timeout=0。
2、maxclients
客户端最大的连接数,默认为10000
3、tcp-keepalive
检测tcp连接活性的周期,默认值为0,建议设置为60,redis会在设定的时期内对它创建的tcp进行活性的检测,防止大量的连接占用系统资源。
4、tcp-backlog
用来设置tcp连接队列的大小,默认值为511,这个参数会受到操作系统的影响。
管理连接redis server的客户端相关推荐
- Redis server went away
原因1:可能是redis server没有启动. 原因2:可能是连接redis server的配置信息不正确,例如 IP地址 和 端口号:
- [ 搭建Redis本地服务器实践系列三 ] :图解Redis客户端工具连接Redis服务器
原文:[ 搭建Redis本地服务器实践系列三 ] :图解Redis客户端工具连接Redis服务器 上一章 [ 搭建Redis本地服务器实践系列二 ] :图解CentOS7配置Redis 介绍了Red ...
- 使用RedisDesktopManager客户端无法连接Redis服务器问题解决办法
使用RedisDesktopManager客户端无法连接Redis服务器问题解决办法 参考文章: (1)使用RedisDesktopManager客户端无法连接Redis服务器问题解决办法 (2)ht ...
- Redis进阶-JedisCluster初始化 自动管理连接池中的连接 _ 源码分析
文章目录 Pre Code 初始化 槽计算 无需手工调用close方法 Pre Redis进阶-Redis集群原理剖析及gossip协议初探 集群原理部分 简单的提了下Jest是如何实现Redis C ...
- JAVA连接Redis客户端多种方式实现
Jedis介绍 Redis不仅使用命令来操作,而且可以使用程序客户端操作.现在基本上主流的语言都有客户端支持,比如java.C.C#.C++.php.Node.js.Go等. 在官方网站里列一些Jav ...
- 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 ...
- 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 ...
- Navicat 连接SQL Server ERROR [IM002] [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序
Navicat 连接SQL Server ERROR [IM002] [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序 和能成功连接数据库的环境对比,发现少了 ...
- Redis 常用可视化客户端管理软件
一.引言 现在开发过程中使用Redis的地方越来越多了,而且使用过程中,我们需要可能需要查看下Redis数据,但是命令行使用起来比较麻烦而且看起来不直观,当数据量比较多就比较麻烦,没可视化客户端看起来 ...
最新文章
- [Beta]第五次 Scrum Meeting
- win10 看不到其它计算机,w10网上邻居搜索不到其它电脑怎么办
- 请求转发与重定向的区别和执行流程
- 如何修改Vs2008环境变量
- 什么是pisa测试_PISA测试排名世界第一,中国教育已是世界冠军?
- python单向循环链表_python实现单向循环链表 -- 详细思路分析
- python怎么打开程序管理器_python进程管理工具supervisor的安装与使用教程
- 全面学习 Python 包,你 Get 了吗?
- 【安全狐】robots协议详解(robots.txt)
- javaweb调用qq认证登录接口
- 关于萨蒂亚·纳德拉安全演讲你所要知道的
- 如何录制英雄联盟 (LoL) 游戏视频
- 使用SpriteAtlas打包图集并显示
- dwm.exe(桌面窗口管理器)占用内存过大解决办法
- 使用 PSCP将文件从 Windows 计算机快速传输到 Linux计算机
- 为陶崇园争取正义懒人包1.0
- 目标检测与位姿估计(五):A Survey: Visual Place Recognition
- 高斯消元法(C++实现)
- PowerBI如何注册
- 分享一个阿里云开源的流程图-g6
热门文章
- Whale News | 帷幄 CEO 叶生晅入围36氪「X·36Under36」榜单
- TypeError: can‘t convert cuda:0 device type tensor to numpy. Use Tensor.cpu() to copy the tensor to
- 【财富空间】人品,是最好的底牌
- 解决springboot上传图片无法显示问题
- 各种网客平台纷纷兴起,你进入到哪个网客领域了?
- 假如贸易条件为1单位计算机换22单位小麦,请哪位强人帮我解答下有关国际贸易的一道题...
- 中国股神—林园炒股秘籍
- DX10.1与DX10的简述
- Java基础学习笔记(十九)—— 多线程(1)
- 【动画】css实现旋转和平移效果