• 手写redis客户端


    一、RESP通信协议

            Redis Serialization Protocol (Redis序列化协议).

            特点:容易实现、解析快、可读性强

            以 分割数据.

    二、撸代码

    package com.dongnao.demo;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.Socket;
    
    /**
     * Created by crescendo.tian on 2018/8/27.
     */
    public class TqRedis {
    
        private Socket socket;
        private OutputStream write;
        private InputStream read;
    
        public TqRedis(String host, int port) throws IOException {
            socket = new Socket(host, port);
        }
    
        public void set(String key, String val) throws IOException {
            StringBuffer sb = new StringBuffer();
            sb.append("*3").append("
    ");//代表3个参数
            sb.append("$3").append("
    ");//第一个参数的长度
            sb.append("SET").append("
    ");//第一个参数的内容
    
            sb.append("$").append(key.getBytes().length).append("
    ");//第二个参数长度
            sb.append(key).append("
    ");//第二个参数内容
    
            sb.append("$").append(val.getBytes().length).append("
    ");//第三个参数长度
            sb.append(val).append("
    ");//第三个参数内容
    
            write.write(sb.toString().getBytes());
            byte[] bytes = new byte[1024];
            read.read(bytes);
            System.out.println("set---------------------------------------------");
            System.out.println(new String(bytes));
        }
    
        public void get(String key) throws IOException {
            StringBuffer sb = new StringBuffer();
            sb.append("*2").append("
    ");//代表2个参数
            sb.append("$3").append("
    ");//第一个参数长度
            sb.append("GET").append("
    ");//第一个参数的内容
    
            sb.append("$").append(key.getBytes().length).append("
    ");//第二个参数长度
            sb.append(key).append("
    ");//第二个参数内容
    
            write.write(sb.toString().getBytes());
            byte[] bytes = new byte[1024];
            read.read(bytes);
            System.out.println("get---------------------------------------------");
            System.out.println(new String(bytes));
        }
    
        public static void main(String[] args) throws IOException {
            TqRedis jedis = new TqRedis("127.0.0.1", 6379);
            jedis.set("test", "001");
            jedis.get("test");
        }
    
    }

     三、引用

    https://www.jianshu.com/p/c0c18f9f5494

  • 相关阅读:
    java编码规范
    Unix操作系统内核结构报告
    vim常用命令组合
    JavaWeb学习笔记13--Servlet开发(二)
    JavaWeb学习笔记12--Servlet开发(一)
    JavaWeb学习笔记11--JSTL标签库
    JavaWeb学习笔记10--Cookie实现记住密码的功能
    JavaWeb学习笔记9--JSP属性范围
    JavaWeb学习笔记8--JSP内置对象详解
    JavaWeb学习笔记7--JSP脚本元素、指令元素、动作元素
  • 原文地址:https://www.cnblogs.com/sunrisexq/p/9545081.html
Copyright © 2020-2023  润新知