REDIS (15)手写Java Redis客户端(1)RESP协议分析(未完)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kkgbn/article/details/84963814

一直对Jedis有点兴趣, 现在静下心来抽空看看redis客户端和消费端是怎么连接的

1. 对Jedis的get命令抓包

发送
在这里插入图片描述
接收
在这里插入图片描述

可见是明文协议,0d 0a 是 \r\n我们找下文档
redis 序列化协议

2. 模仿协议内容发送并接收内容

2.1 传统BIO的写法

public static void main(String[] args) throws Exception {

		Socket socket = new Socket("123.56.13.70", 6300);
		OutputStream out = socket.getOutputStream();
		InputStream in = socket.getInputStream();

		StringBuilder sb = new StringBuilder();
		sb.append("*3").append("\r\n");
		sb.append("$3").append("\r\n");
		sb.append("SET").append("\r\n");
		sb.append("$3").append("\r\n");
		sb.append("mua").append("\r\n");
		sb.append("$4").append("\r\n");
		sb.append("lisa").append("\r\n");
		out.write(sb.toString().getBytes());

		byte[] bytes = new byte[1024];
		in.read(bytes);

		System.out.println(sb.toString());
		System.out.println("-----------------");
		System.out.println(new String(bytes));
		
		socket.close();

	}

结果:

*3
$3
SET
$3
mua
$4
lisa

-----------------
+OK

猜你喜欢

转载自blog.csdn.net/kkgbn/article/details/84963814
今日推荐