redis 模拟jedis 操作string类型数据
时间:2019-09-28
本文章向大家介绍redis 模拟jedis 操作string类型数据,主要包括redis 模拟jedis 操作string类型数据使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一.思路分析
redis数据传输遵循resp协议,只需要按照resp协议并通过socket传递数据到redis服务器即可
resp数据格式:
二.具体实现
package com.ahd.jedis; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; /*** * 模拟jedis对redis进行操作 */ public class MyJedis { private Socket socket; public MyJedis(String url,Integer port) throws IOException { socket=new Socket(url,port); } public static void main(String[] args) throws IOException { MyJedis myJedis=new MyJedis("127.0.0.1",6379); //myJedis.set("sex","sdf"); //myJedis.get("sex"); myJedis.del("sex"); } /*** * 模拟set string类型 * @param key * @param value */ public void set(String key,String value) throws IOException { StringBuffer stringBuffer=new StringBuffer(); //getBytes 是因为key和value可能是中文,直接获取长度会出错 stringBuffer.append("*3"+"\r\n") .append("$3"+"\r\n").append("SET"+"\r\n") .append("$"+key.getBytes().length+"\r\n").append(key+"\r\n") .append("$"+value.getBytes().length+"\r\n").append(value+"\r\n"); OutputStream outputStream = socket.getOutputStream(); System.out.println(stringBuffer); outputStream.write(stringBuffer.toString().getBytes()); } /*** * 模拟get String * @param key * @return */ public String get(String key) throws IOException { StringBuffer stringBuffer=new StringBuffer(); //getBytes 是因为key和value可能是中文,直接获取长度会出错 stringBuffer.append("*2"+"\r\n") .append("$3"+"\r\n").append("get"+"\r\n") .append("$"+key.getBytes().length+"\r\n").append(key+"\r\n"); //1. 将命令传递到redis OutputStream outputStream = socket.getOutputStream(); outputStream.write(stringBuffer.toString().getBytes()); //2. 接收redis的响应结果 InputStream inputStream = socket.getInputStream(); byte[] b=new byte[2048]; inputStream.read(b); return new String(b); } /*** * 指定key 删除 * @param key * @return * @throws IOException */ public void del(String key) throws IOException { StringBuffer stringBuffer=new StringBuffer(); //getBytes 是因为key和value可能是中文,直接获取长度会出错 stringBuffer.append("*2"+"\r\n") .append("$3"+"\r\n").append("del"+"\r\n") .append("$"+key.getBytes().length+"\r\n").append(key+"\r\n"); //1. 将命令传递到redis OutputStream outputStream = socket.getOutputStream(); outputStream.write(stringBuffer.toString().getBytes()); outputStream.flush(); } }
三.运行结果
原文地址:https://www.cnblogs.com/aihuadung/p/11604938.html
- 看吧,这就是现代化 PHP 该有的样子
- 从web图片裁剪出发:了解H5中的Blob
- Android子线程更新UI主线程方法之Handler
- Drawable.Bitmap.Canvas.Paint.Matrix
- 关于JSON.stringify和Unicode编码,需要注意的几点
- 用 PHP 的方式实现的各类算法合集
- Nginx 反向代理解决前后端联调跨域问题
- JavaScript对象length
- Go1.8.4和Go1.9.1版本发布
- Javascript数组操作
- Tensorflow官方语音识别入门教程 | 附Google新语音指令数据集
- jQuery VS JavaScript原生API
- 居于H5的多文件、大文件、多线程上传解决方案
- 抛弃websocket,前端直接打通信道,webRTC搭建音视频聊天
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 一文帮你理解整个 SRE 运维体系!
- 拆解式解读如何用飞桨复现胶囊神经网络(Capsule Network)
- 我用飞桨Parakeet合成小姐姐声音帮我“读”论文
- 【5分钟玩转Lighthouse】搭建WordPress博客
- vue接入腾讯地图(一)【点击事件】
- Redis文件事件&时间事件处理机制
- Redis持久化策略
- Redis二进制安全的原理
- 面试必备 Vue 知识点
- 数据传输 | mysqldiff/mysqldbcompare 实现 DTLE 自动化测试
- CPU有个禁区,内核权限也无法进入!
- 分布式 | DBLE 3.20.07.0 来啦!
- C语言三剑客之《C陷阱与缺陷》一书精华提炼
- Linux进程间通信(上)之管道、消息队列实践
- FPGA上电时序