redis通信协议 学习笔记

5 篇文章 0 订阅

0 环境

  • 系统环境: centos7
  • 编辑器: xshell
  • IDE:IDEA

1 前言

思维导图参考
参考网站

2 准备

redis这块需要设置一下redis.conf 关闭保护模式和注释掉密码那行 redis-server xxx.conf 开启它 比如我用windows 可以cmd 在dos界面 telnet host port (telnet 192,168.1.123 6379) 测试跳到一个黑窗口 说明OK了 直接上代码即可

3 代码

public class SocketRedisClient {
    private Socket socket;

    // 初始化
    public SocketRedisClient() {
        try {
            this.socket = new Socket(host, 6382);
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("连接失败!!!");
        }

    }

    /**
     * 参考 * 参数数量 \r\n $ 参数字节数 \r\n 参数数据 \r\n
     *      SET mykey "Hello"
     *      *3 --> 整的参数数量 $3 --> set字符串的长度 后面类似
     *      *3 \r\n $3 \r\n SET \r\n $7 \r\n myredis \r\n $3 \r\n why \r\n
     * @param key
     * @param value
     * @return
     */
    public String set(String key, String value) throws IOException {
        StringBuilder builder = new StringBuilder();
        builder.append("*3")
                .append("\r\n")
                .append("$")
                .append("SET".length())
                .append("\r\n")
                .append("SET")
                .append("\r\n")
                .append("$")
                .append(key.getBytes().length)
                .append("\r\n")
                .append(key)
                .append("\r\n")
                .append("$")
                .append(value.getBytes().length)
                .append("\r\n")
                .append(value)
                .append("\r\n");

        // 打印出来
        System.out.println(builder.toString());
        socket.getOutputStream().write(builder.toString().getBytes());
        byte[] bytes = new byte[1024];
        socket.getInputStream().read(bytes);

        return new String(bytes);

    }

    /**
     * 获取key
     * @param key
     * @return
     */
    public String get(String key) throws IOException {
        StringBuilder builder = new StringBuilder();
        builder.append("*2")
                .append("\r\n")
                .append("$")
                .append("GET".length())
                .append("\r\n")
                .append("GET")
                .append("\r\n")
                .append("$")
                .append(key.getBytes().length)
                .append("\r\n")
                .append(key)
                .append("\r\n");

        // 打印出来
        System.out.println(builder.toString());
        socket.getOutputStream().write(builder.toString().getBytes());
        byte[] bytes = new byte[1024];
        socket.getInputStream().read(bytes);

        return new String(bytes);
    }

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

        String set = new SocketRedisClient().set("myredis", "why");
        System.out.println(set);
        System.out.println("-------------------------------------");
        String get = new SocketRedisClient().get("myredis");
        System.out.println(get);
    }
}

3 结果

*3
$3
SET
$7
myredis
$3
why

+OK
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
-------------------------------------
*2
$3
GET
$7
myredis

$3
why
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值