Redis_04_Redis客户端

客户端

RESP

RESP(Redis Serialization Protocol,Redis序列化协议):服务端与客户端通信协议

1)任何语言只要实现RESP协议,即可调用Redis客户端与服务端Redis通信;

2)Redis客户端只能看到命令的执行结果(RESP解析);


RESP协议发送数据的格式:

*参数个数CRLF
$参数1的字节数CRLF
参数1CRLF
$参数N的字节数CRLF
参数NCRLF

//CRLF代表\r\n,(上述数据在实际传输过程全在一行)


RESP协议返回结果的格式:

回复类型回复前缀
状态回复+
错误回复-
整数回复
字符串回复$字符串的字节数CRLF
多条字符串回复*

如:执行“SET hello word”命令转换为RESP的格式


1)发送格式

*3
$3
SET
$5
hello
$5
world

2)结果格式

+OK

redis-py

redis-py:Python语言根据RESP协议实现的Redis客户端

1)使用该客户端前,需下载:pip3 install redis

2)redis-py的命令API沿袭Redis内置命令的API风格


(1)生成Redis客户端格式:

客户端 = redis.StrictRedis(host='服务端IP',port='服务端端口')

1)使用客户端前,需导入依赖库:import redis


(2)调用Redis命令格式:

客户端名.命令(参数)

1)Redis内置命令均可使用(如:SET、GET、HSET和HGETALL等);

2)返回结果也等同于Redis内置命令的返回结果;


(3)通过Pipeline调用命令:

1)创建Pipeline:

Pipeline名 = 客户端名.pipeline(transaction=True或False)

//transaction代表是否使用事务

2)打包命令:

Pipeline名.命令(参数)

3)执行命令

Pipeline名.EXECUTE()

MONITOR

MONITOR命令:监控当前服务端Redis执行的命令

1)可监控任意客户端在服务端执行的命令,并记录详细时间戳等信息;

2)会占用执行该命令的终端以动态显示各命令的详细信息;


MONITOR命令格式:MONITOR

1)若服务端Redis并发量过大,MONITOR客户端的输出缓冲区会暴涨;

//在高并发的Redis中尽量避免使用MONITOR命令(存在阻塞风险)


客户端管理

(1)设置客户端名

CLIENT SETNAME 名称

1)设置成功后返回OK;

2)一般使用IP和端口号作为标识(具有唯一性);


(2)获取客户端名

CLIENT GETNAME

1)返回当前客户端的名称;


(3)阻塞服务端

CLIENT PAUSE N

1)阻塞只能影响普通客户端N毫秒(主从复制的客户端会忽略该命令);


(4)关闭客户端

CLIENT KILL IP:端口

1)关闭成功后返回OK;

CLIENT LIST

CLIENT LIST命令:返回与服务端Redis连接的Redis客户端信息

1)每个换行输出代表一个Redis客户端信息;


如:返回所有Redis客户端信息
在这里插入图片描述


字段含义
id客户端ID
addr客户端的IP和端口
fdsocket文件描述符
name客户端名
age客户端已连接时间
idle客户端连接后的空闲时间
flags客户端类型标识
db客户端正在使用的数据库号
sub客户端已订阅的频道数量
psub客户端已订阅的模式数量
multi当前事务已执行命令个数
qbuf输入缓冲区总容量
qbuf-free输入缓冲区剩余容量
obl固定输出缓冲区的长度
oll动态输出缓冲区的长度
omem固定输出缓冲区和动态输出缓冲区的总容量
events文件描述符事件
cmdRedis客户端最后一次执行的命令(不包含参数)

1)fd=-1代表当前客户端是Redis内部的伪客户端(不是外部连接);

2)输入缓冲区只能由Redis动态调整(不能超过1G,否则会断开连接);

3)输出缓冲区由固定缓冲区(16KB)和动态缓冲区组成(可指定大小);

4)固定缓冲区和动态缓冲区分别使用字节数组和列表存储数据;

//固定缓冲区用于存储较小的返回结果,动态缓冲区存储较大的

//当固定缓冲区存满后,会将后续的所有返回结果均存储至动态缓冲区

//输入缓冲区和输出缓冲区均不受maxmemory控制


客户端类型有以下10种:

代表符号说明
N普通客户端
MMaster节点
SSlave节点
O客户端正在执行MONITOR命令
x客户端正在执行事务
b客户端正在等待阻塞事件
d受监视的键已被修改
u客户端未被阻塞
c命令式连接客户端
A尽可能快速关闭连接
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值