使用Java操作Redis(一)
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工具来简化操作。
使用Java操作Redis(一)的更多相关文章
- java操作redis之jedis篇
首先来简单介绍一下jedis,其实一句话就可以概括的,就是java操作redis的一种api.我们知道redis提供了基本上所有常用编程语言的clients,大家可以到http://redis.io/ ...
- java 操作redis
使用Java操作Redis需要jedis-2.1.0.jar,如果需要使用Redis连接池的话,还需commons-pool-1.5.4.jar package com.test; import ja ...
- windows下Redis安装及利用java操作Redis
一.windows下Redis安装 1.Redis下载 下载地址:https://github.com/MicrosoftArchive/redis 打开下载地址后,选择版本 然后选择压缩包 下载 R ...
- java操作redis集群配置[可配置密码]和工具类(比较好用)
转: java操作redis集群配置[可配置密码]和工具类 java操作redis集群配置[可配置密码]和工具类 <dependency> <groupId>red ...
- java操作redis集群配置[可配置密码]和工具类
java操作redis集群配置[可配置密码]和工具类 <dependency> <groupId>redis.clients</groupId> & ...
- Linux+Redis实战教程_day02_3、redis数据类型_4、String命令_5、hash命令_6、java操作redis数据库技术
3. redis数据类型[重点] redis 使用的是键值对保存数据.(map) key:全部都是字符串 value:有五种数据类型 Key名:自定义,key名不要过长,否则影响使用效率 Key名不要 ...
- Java操作Redis工具类
依赖 jar 包 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis< ...
- 【redis】java操作redis时,StringRedisTemplate的expire()方法的作用,什么时候使用
java操作redis时,StringRedisTemplate的expire()方法的作用,什么时候使用 //重新设置过期时间为30分钟,刷新时间 redisTemplate.expire(MsOp ...
- java操作redis学习(一):安装及连接
文章参考自:http://www.cnblogs.com/edisonfeng/p/3571870.html,在此基础上进行了修改. 一.下载安装Redis redis官网显示暂时不支持Windows ...
- Java操作redis【二十】
1.首先需要将redis的绑定地址为127.0.0.1去掉,同时将redis的保护模式去掉,并且开放6379端口. 如果是保护模式需要输入密码才能连接. (1)去掉绑定地址: (2)去掉保护模式: ( ...
随机推荐
- PHP中用下标符号[]去读取字符串的逻辑
PHP中 [(下标)] 符号不仅能够应用于数组和对象,还能够应用于字符串,假设不注意非常easy出错. 比方获取一个网络接口,正常情况下会返回一个数组结构的json,经过解析之后结果为: array( ...
- m_Orchestrate learning system---八、下拉列表(select标签)如何实现链接功能
m_Orchestrate learning system---八.下拉列表(select标签)如何实现链接功能 一.总结 一句话总结:option的值就是链接地址,选择事件为指向选中的option的 ...
- m_Orchestrate learning system---二十一、怎样写算法比较轻松
m_Orchestrate learning system---二十一.怎样写算法比较轻松 一.总结 一句话总结:(1.写出算法步骤,这样非常有利于理清思路,这样就非常简单了 2.把问题分细,小问题用 ...
- String转换成int型
private boolean judge(String str){ int year = 0; try{ year = Integer.valueOf(str).intValue(); }catch ...
- C++线程安全退出
HANDLE m_EvtThreadExit[MaxVisionNum]; //定义 方法一 ;i<MaxVisionNum;i++) m_EvtThreadExit[index] = Crea ...
- HDU 1394 Minimum Inversion Number【 树状数组 】
题意:给出n个数,每次可以把第一个数挪到最后一个位置去,问这n种排列里面的最小逆序对数 先把最开始的逆序对数求出来 然后对于一个数a[i],比它小的数有a[i] - 1个,比它大的数有n - a[i] ...
- 关于zabbix 的lld的web界面的配置
lld脚本在配置文件中例子: UserParameter=lldisk,/bin/bash /script/lldisk.sh disk_count 1.监控项 2.监控项原型
- ActiveMQ学习笔记(6)----ActiveMQ整合Spring开发
1. 添加依赖 spring 提供了对JMS的支持,需要添加Spring支持jms的包和Spring的核心包,如下: <dependency> <groupId>org.apa ...
- springMVC小项目实例
一.什么是 Spring MVC Spring MVC 属于 SpringFrameWork 的后续产品,已经融合在 Spring Web Flow 里面,是一个强大灵活的 Web 框架.Spring ...
- SPA SEO SSR三者有什么区别
SPA通俗的说就是单页面应用(single page application) 优点 页面之间的切换非常快 一定程度减少了后端服务器的压力 后端程序只需要提供api,不需要客户端到底是web端还是手机 ...