一、set方法
1,先去调用底层的connect方法,去进行一个socket连接
connect
从源码中可以看到是通过CP协议与redis建立socket连接,此时可以将redis理解为一个serverSocket。
2.手写模拟一个redis
public class ServerSocketRedis {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(6378);
Socket rec = serverSocket.accept();
byte[] result = new byte[2048];
rec.getInputStream().read(result);
System.out.println(new String(result));
}
}
然后通过一个测试类向其set一条数据
public class TestRedis {
public static void main(String[] args) {
Jedis jedis = new Jedis("127.0.0.1",6378);
jedis.set("jinping","123");
jedis.close();
}
}
虽然在客户端报了错,但是在serverSocket端可以看到如下信息:
serverSocket端输出信息
这个东西是resp传输报文的协议,这个协议是一个非常简单的协议,向redis中提交数据是通过resp协议去实现的
resp协议其实就是对传输的数据的一个封装,描述其数据信息
3 代表有三组数据:set key value
$3 代表对第一组数据的修饰(长度)
SET
$7 第二个字符串的长度
jinping
$3 第三个字符串 的长度
123