Redis-2-客户端

本文围绕Redis展开,介绍了客户端与服务端的通信协议,包括基础的TCP协议及扩展的RESP协议,还说明了RESP的发送命令和返回结果格式。同时讲解了Java客户端Jedis的使用,以及客户端管理、配置和统计常用命令等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通信协议

基础协议:客户端与服务端之间的通信协议是在TCP协议之上构建的;

扩展协议:Redis制定了RESP(Redis Serialization Protocol,Redis序列化协议)实现客户端与服务端的正常交互,这种协议简单高效,既能够被机器解析,又容易被人类识别。

RESP发送命令格式

CRLF代表\r\n

*<参数数量> CRLF

$<参数1的字节数量> CRLF

<参数1> CRLF

...

$<参数N的字节数量> CRLF

<参数N> CRLF

RESP返回结果格式

Redis的返回结果类型分为以下五种:

状态回复:在RESP中第一个字节为"+"。

错误回复:在RESP中第一个字节为"-"。

整数回复:在RESP中第一个字节为":";当命令的执行结果是整数时,返回结果就是整数回复。

字符串回复:在RESP中第一个字节为"$";当命令的执行结果是字符串时,返回结果就是字符串回复。

多条字符串回复:在RESP中第一个字节为"*";当命令的执行结果是多条字符串时,返回结果就是多条字符串回复;第一个*数字中的数字代表返回结果的个数,后面的格式是和字符串回复一致的。

注意:无论是字符串回复还是多条字符串回复,如果有nil值,那么会返回$-1。

Java客户端Jedis

# 1. 生成一个Jedis对象,这个对象负责和指定Redis实例进行通信

Jedis jedis = new Jedis("127.0.0.1", 6379);

# 2. jedis执行set操作

jedis.set("hello", "world");

# 3. jedis执行get操作, value="world"

String value = jedis.get("hello");

Jedis还提供了类似于数据库连接池的JedisPool、同时还能使用pipeline、lua脚本等功能。

客户端管理

1.client list命令能列出与Redis服务端相连的所有客户端连接信息;

2.client setName用于给客户端设置名字,这样比较容易标识出客户端的来源;如果想直接查看当前客户端的name,可以使用client getName命令;

3.client kill此命令用于杀掉指定IP地址和端口的客户端;

4.client pause timeout,client pause命令用于阻塞客户端timeout毫秒数,在此期间客户端连接将被阻塞;

5.monitor命令用于监控Redis正在执行的命令;

客户端配置

timeout:检测客户端空闲连接的超时时间,一旦idle时间达到了timeout,客户端将会被关闭,如果设置为0就不进行检测;

maxclients:客户端最大连接数,这个参数会受到操作系统设置的限制;

tcp-keepalive:检测TCP连接活性的周期,默认值为0也就是不进行检测,如果需要设置,建议为60,那么Redis会每隔60秒对它创建的TCP连接进行活性检测,防止大量死连接占用系统资源;

tcp-backlog:TCP三次握手后,会将接受的连接放入队列中,tcpbacklog就是队列的大小,它在Redis中的默认值是511。这个参数会受到操作系统的影响;

客户端统计常用命令

info clients、info stats

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值