自己动手写Redis客户端(C#实现)2 - SET请求和…
2018-06-18 04:05:49来源:未知 阅读 ()
Redis请求协议的一般形式:
*<参数数量> CR LF $<参数 1 的字节数量> CR LF <参数 1 的数据> CR LF ... $<参数 N 的字节数量> CR LF <参数 N 的数据> CR LF
备注:CR表示为\r; LF表示\n
下面是一个例子:
*3 $3 SET $5 mykey $7 myvalue
Redis回复
Redis 命令会返回多种不同类型的回复。
通过检查服务器发回数据的第一个字节, 可以确定这个回复是什么类型:
- 状态回复(status reply)的第一个字节是
"+"
- 错误回复(error reply)的第一个字节是
"-"
- 整数回复(integer reply)的第一个字节是
":"
- 批量回复(bulk reply)的第一个字节是
"$"
- 多条批量回复(multi bulk reply)的第一个字节是
"*"
实现代码(C#)
1、 通过Socket 连接 Redis:
// 通过Socket 连接 redis Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); s.Connect("127.0.0.1", 6379);
2、发送指令
string key = "SetKeyTest"; // 设置 的key string value = "设置的值"; // 设置的值 StringBuilder sbSend = new StringBuilder(); sbSend.Append("*3\r\n"); // 参数数量 3 string cmd = "SET"; sbSend.Append("$" + Encoding.UTF8.GetBytes(cmd).Length + "\r\n"); // 参数1的长度 sbSend.Append(cmd + "\r\n");// 参数1( SET指令 ) sbSend.Append("$" + Encoding.UTF8.GetBytes(key).Length + "\r\n"); // 参数2的长度 sbSend.Append("" + key + "\r\n");// 参数2(Set 的 Value) sbSend.Append("$" + Encoding.UTF8.GetBytes(value).Length + "\r\n"); // 参数3的长度 sbSend.Append("" + value + "\r\n");// 参数3(Set 的 Value) Console.WriteLine("发送的命令:"); Console.Write(sbSend.ToString()); byte[] data = Encoding.UTF8.GetBytes(sbSend.ToString()); // 把请求转换为byte数组
3、接收回复
byte[] result = new byte[1024]; int resultLength = s.Receive(result); // 接收回复 // 根据接收到的数据长度重新组装一个结果 byte[] newResult = new byte[resultLength]; for (int i = 0; i < resultLength; i++) { newResult[i] = result[i]; } string strResult = Encoding.UTF8.GetString(newResult); // 把结果转换为string Console.Write(strResult); Console.Write(strResult.Trim() == "+OK" ? "设置成功!": "设置失败!"); // 判断设置是否成功
执行效果
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:Spring学习之路
下一篇:mvc手把手教你写excel导入
- redis缓存 2020-06-12
- 构建自己的jar包上传至Mvaen中央仓库和版本更新 2020-06-11
- Spring Boot 2.3.0 新特性Redis 拓扑动态感应 2020-06-11
- 作为一个面试官,我想问问你Redis分布式锁怎么搞? 2020-06-10
- 分布式锁没那么难,手把手教你实现 Redis 分布锁!|保姆级教 2020-06-08
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash