如何使用Redis协议
发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,如何使用Redis协议?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。redis协议解析数据的过程主要依赖于redis的协议了。我们写个简
千家信息网最后更新 2025年01月21日如何使用Redis协议
如何使用Redis协议?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
redis协议
解析数据的过程主要依赖于redis的协议了。我们写个简单例子看下redis的协议:
public class RedisTest { public static void main(String[] args) { Jedis jedis = new Jedis("127.0.0.1", 6379); jedis.set("eat", "I want to eat"); }}
监听socket:
public static void main(String[] args) throws IOException { ServerSocket server = new ServerSocket(6379); Socket socket = server.accept(); byte[] chars = new byte[64]; socket.getInputStream().read(chars); System.out.println(new String(chars)); }
看下数据:
*3$3SET$3eat$13I want to eat
参照官方协议文档https://redis.io/topics/protocol,解析下数据。
(1)简单字符串 Simple Strings, 以 "+"加号 开头(2)错误 Errors, 以"-"减号 开头(3)整数型 Integer, 以 ":" 冒号开头(4)大字符串类型 Bulk Strings, 以 "$"美元符号开头,长度限制512M(5)组类型 Arrays,以 "*"星号开头并且,协议的每部分都是以 "\r\n" (CRLF) 结尾的。
所以上面的数据的含义是:
*3 数组包含3个元素,分别是SET、eat、I want to eat$3 是一个字符串,且字符串长度为3SET 字符串的内容$3 是一个字符串,且字符串长度为3eat 字符串的内容$13 是一个字符串,且字符串长度为13I want to eat 字符串的内容
执行get 'eat'的数据如下:
*2$3GET$3eat
撸一个客户端
掌握了redis协议,socket之后,我们就可以尝试撸一个客户端了。
socket:
public RedisClient(String host, int port){ try { this.socket = new Socket(host,port); this.outputStream = this.socket.getOutputStream(); this.inputStream = this.socket.getInputStream(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
set协议:
public String set(final String key, String value) { StringBuilder sb = new StringBuilder(); //虽然输出的时候,会被转义,然而我们传送的时候还是要带上\r\n sb.append("*3").append("\r\n"); sb.append("$3").append("\r\n"); sb.append("SET").append("\r\n"); sb.append("$").append(key.length()).append("\r\n"); sb.append(key).append("\r\n"); sb.append("$").append(value.length()).append("\r\n"); sb.append(value).append("\r\n"); byte[] bytes= new byte[1024]; try { outputStream.write(sb.toString().getBytes()); inputStream.read(bytes); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return new String(bytes); }
测试:
RedisClient redisClient = new RedisClient("127.0.0.1", 6379); String result = redisClient.set("eat", "please eat"); System.out.println(result);
执行结果:
+OK
看完上述内容,你们掌握如何使用Redis协议的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!
字符
字符串
内容
开头
数据
长度
客户
客户端
方法
时候
更多
类型
问题
束手无策
为此
例子
元素
冒号
减号
加号
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
简述网络安全保护和监督体制
滨州瀚森网络技术有限公司
软件开发环境维护内容
如何进行学习网络安全知识
小米应用商店原神是哪一个服务器
计算机网络技术与因特网
安徽项目软件开发价格表
临时邮箱服务器配置
堡垒机怎么连接服务器
威海家和网络技术王亚雄
数据库管理系系统
国际健康标准数据库
40能学软件开发
吐鲁番软件开发市场价
成都中国网络安全论坛
网络安全买什么票好
二线城市软件开发
pb自动连接sql数据库
网络安全 题库
魔兽十区哪个服务器好
苏黎世网络安全保险保单
网络安全员办公环境
网络技术高中数学教案
win7数据库卸载不干净
sql本地服务器名称
太空网络安全政策
网络安全审计哪种好
dcs中国服务器没了
软件开发合作纠纷解决计划
服务器能当电脑用