部门网站建设管理报告,阜阳网站建设,wordpress 相关文章 插件,教育机构域名首先要了解Redis的交互协议。
摘抄#xff1a; 简单字符串#xff08;Simple Strings#xff09;: 以 “” 开头#xff0c;例如 “OK\r\n” 表示一个成功的响应。错误#xff08;Errors#xff09;: 以 “-” 开头#xff0c;例如 “-ERR unknown command\r\n” 表示一…首先要了解Redis的交互协议。
摘抄 简单字符串Simple Strings: 以 “” 开头例如 “OK\r\n” 表示一个成功的响应。错误Errors: 以 “-” 开头例如 “-ERR unknown command\r\n” 表示一个错误响应。整数Integers: 以 “:” 开头例如 “:1000\r\n” 表示整数1000。批量字符串Bulk Strings: 以 “$” 开头例如 “$6\r\nfoobar\r\n” 表示一个长度为6的字符串 “foobar”。数组Arrays: 以 “*” 开头例如 “*3\r\n:1\r\n:2\r\n:3\r\n” 表示包含3个整数的数组 [1, 2, 3]。 最好设置Redis是无密码允许访问。
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketAddress;/*** Annotation:模拟Redis服务器 port6379*/
public class RedisHost {/*** 1.客户端连接命令:COMMAND* 2.RedisHost response OK* 3.客户端发送命令* 4.RedisHost response OK(如果是set命令)* 5.客户端发送命令* 6.RedisHost response value(如果是get)命令* param args*/public static void main(String[] args) {try {byte[] bytes new byte[1024];ServerSocket server new ServerSocket();InetSocketAddress address new InetSocketAddress(127.0.0.1, 6379);server.bind(address);Socket accept server.accept();InputStream is accept.getInputStream();//客户端带宽//客户端连接int clientCon is.read(bytes);System.out.println(客户端连接 new String(bytes, 0, clientCon));OutputStream os accept.getOutputStream();//Redis服务器带宽//Redis回应OKString hostRespCon OK\r\n;os.write(hostRespCon.getBytes());os.flush();System.out.println(客户端与Redis服务器连接成功Redis服务器响应了 hostRespCon);System.out.println(客户端可以继续输入内容);//等待客户端输入。。。。//读取客户端的第一次输入int clientSet is.read(bytes);String clientStr new String(bytes, 0, clientSet);System.out.println(客户端第一次输入了 clientStr);//Redis对客户端的输入响应OKString hostRespSet OK\r\n;os.write(hostRespSet.getBytes());os.flush();System.out.println(客户端输入成功Redis服务器响应了 hostRespSet);//客户端再次输入System.out.println(客户端可以继续输入内容);int clientGet is.read(bytes);String clientGetStr new String(bytes, 0, clientGet);System.out.println(客户端又输入了: clientGetStr);//组装语句String substring getLastStr(clientStr);//值//Redis响应if (clientGetStr.contains(get)) {if (getLastStr(clientGetStr).equals(getKey(clientStr))){os.write(substring.getBytes());System.out.println(服务器响应了 substring);}else {String notExist*-1\r\n$3\r\nnull\r\n;os.write(notExist.getBytes());System.out.println(客户端输入的键getLastStr(clientGetStr)不存在!);}}//释放资源os.flush();is.close();os.close();accept.close();server.close();} catch (IOException e) {e.printStackTrace();}}//从后面开始截取从最后一个字符input开始截到最后。public static String getLastStr(String input) {return input.substring(input.lastIndexOf($));}public static String getKey(String s){return s.substring(s.indexOf(s.substring(s.indexOf($,6))),s.lastIndexOf($));}
}