您的位置:首页 > 数据库 > Redis

使用Java操作Redis(一)

2015-04-27 19:59 302 查看
Redis是一款基于key-value的数据库服务器,安装完成后我们可以通过redis-cli使用Redis提供的命令完成各种操作。redis-cli实际上就是一款客户端,和redis-server建立网络连接,然后以一定的格式(称为网络协议)向服务器端发送数据,redis-server根据客户端的请求进行处理并返回相应的结果。

使用Java操作Redis,本质上就是编写Redis的客户端应用,因此我们必须了解Redis自定义的网络协议。

Redis协议官方地址:http://redis.io/topics/protocol

请求协议的一般格式为:

*<参数的个数> CR LF
$<参数1字节数> CR LF
<参数1> CR LF
...
$<参数n字节数> CR LF
<参数n> CR LF


举个例子:set name Jane命令应该对应的以下形式

*3 CR LF  //三个参数
$3 CR LF  //第一个参数set有3个字节
SET CR LF //参数内容set
$4 CR LF  //第二个参数name占4个字节
name CR LF //参数二内容 name
$4 CR LF  //第三个参数有4个字节
Jane CR LF//参数三内容 Jane


对应的字符串形式为
"*3\r\n$3\r\nset$4\r\nname$4\r\nJane\r\n


Redis命令会返回多种不同类型的回复,通过检查返回数据的第一个字节可以确定具体的类型:

状态回复(status reply)的第一个字节是 “+”

错误回复(error reply)的第一个字节是 “-“

整数回复(integer reply)的第一个字节是 “:”

批量回复(bulk reply)的第一个字节是 “$”

多条批量回复(multi bulk reply)的第一个字节是 “*”

了解了这些后我们就可以在Java中和Redis服务器建立Socket连接,然后將指令按照Redis协议格式发送到服务器端,从而达到操作Redis的目的。

代码如下:

try {
Socket sock = new Socket("127.0.0.1",6379);

OutputStream out = sock.getOutputStream();
InputStream in = sock.getInputStream();
//set name rongbo_j
String sendStr =
"*3\r\n$3\r\nSET\r\n$4\r\nname\r\n$8\r\nrongbo_j\r\n";
out.write(sendStr.getBytes());
//get name
sendStr = "*2\r\n$3\r\nGET\r\n$5\r\nname\r\n";
out.write(sendStr.getBytes());

byte[] buffer = new byte[512];
in.read(buffer);
System.out.println(new String(buffer));

} catch (Exception e) {
e.printStackTrace();
}


可以看到如果不对代码进行封装,使用起来是相当繁琐的,下一篇文章介绍如何使用Jedis工具来简化操作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: