Redis是一个基于Key-value结构的Nosql数据库,它支持各种常见的数据结构以及非常方便的操作,
与其说它是一个数据库,不如说它是一个保存各种数据结构的服务器。今天闲来没事,用Java集合类
实现了Redis的一些基本功能,算是温习下Java了。
1.Redis入门
Redis的Key键值为字符串,但是Value值支持许多种类型,如String字符串,List链表,Set无序集合,
SortedSet有序集合,甚至是Hash表。
各种数据结构通过不同的存取方法来区分。如Set/Get直接将值存为String,LPush/LPop/LRange将
值存到一个链表中,SAdd/ZAdd则区分了无序和有序集合。
下面我们来看下在Java中使用基本的集合类如何实现这些简单而方便的操作。
2.Java版的Redis
代码的组织结构如下图:
[java]
package com.cdai.studio.redis;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.TreeSet;
@SuppressWarnings("unchecked")
public class RedisDB {
private Persistence persistence = new Persistence();
private Serializer serializer = new Serializer();
private static final Object[] NULL = new Object[0];
// =================================================
// String value
// =================================================
public void Set(String key, Object value) {
persistence.put(key, serializer.marshal(value));
}
public Object Get(String key) {
return serializer.unmarshal(persistence.get(key));
}
public Object[] MGet(String... keys) {
Object[] values = new Object[keys.length];
for (int i = 0; i < keys.length; i++)
values[i] = Get(keys[i]);
return values;
}
public int Incr(String key) {
Object value = Get(key);
Integer valueRef = (value == null) 1 : (Integer) value;
Set(key, valueRef + 1);
return valueRef;
}
// =================================================
// List value
// =================================================
public void LPush(String key, Object... values) {
Object list = persistence.get(key);
if (list == null)
list = new LinkedList