最近频繁看到redis这项技术,经过多方面了解后,对他进行一个描述:redis是一个内存型的数据库,不同于关系数据库的表结构,它主要存储的是key-value类型,既可用他做缓存技术,也可用于做数据持久化,数据的操作是在内存中处理的,redis会同时把数据存储到硬盘,用于解决高性能的数据解决方案。
Redis类似数据库系统,有独立的服务端和客户端,操作使用NOSQL,常用的命令可以参考《redis入门指南》这本书。
作为java程序员,目前redis的java客户端有两种,jdbc-redis和jredis,从redis官方wiki上以及多种资料上的综合评价,jdbc-redis性能较差,目前主流的Java客户端还是jredis。
下载jredis的jar包,
http://pan.baidu.com/s/1jGgx3eu
下面给我一段测试的代码
public class TestRedis {
private JRedis jredis;
/**
* 建立与服务器连接
* @throws Exception
*/
public void prepareJRedisClient() throws Exception {
System.out.println("** 尝试与服务器建立连接 **");
jredis = new JRedisClient("127.0.0.1",6379);
jredis.ping();
System.out.println("** 连接服务器成功 **");
}
/**
* 断开连接
*/
public void closeJredis() {
if (jredis != null) {
System.out.println("** 断开与服务器的连接 **");
jredis.quit();
}
}
/**
* 测试set/get使用
*/
public void testJRedis() {
try {
jredis.flushdb();
System.out.printf("** 放入值<%s=%s> **\n","foo","bar");
jredis.set("foo", "bar");
byte[] bytes = jredis.get("foo");
String value = DefaultCodec.toStr(bytes);
System.out.printf("** 获取到的值:%s **\n",value);
} catch (RedisException e) {
e.printStackTrace();
}
}
/**
* 测试lpush/rpush/lrange使用
*/
public void testSet() {
try {
jredis.flushdb();
System.out.printf("** 放入集合[%s,%s,%s,%s,%s] **\n","one","two","three","four","five");
jredis.lpush("list", "three");
jredis.lpush("list", "two");
jredis.lpush("list", "one");
jredis.rpush("list", "four");
jredis.rpush("list", "five");
List<byte[]> bytes = jredis.lrange("list", 0, -1);
List<String> values = DefaultCodec.toStr(bytes);
System.out.println("** 获取到的集合值"+values+" **");
} catch (RedisException e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception {
TestRedis redisTest = new TestRedis();
redisTest.prepareJRedisClient();
redisTest.testJRedis();
redisTest.testSet();
redisTest.closeJredis();
}
}