Java版的Redis (二)

2014-11-24 08:22:21 · 作者: · 浏览: 9
al(set);

HashSet setRef = (HashSet) set;
for (Object value : values)
setRef.add(value);
persistence.put(key, serializer.marshal(set));
}

public Object[] SMembers(String key) {
Object set = persistence.get(key);
if (set == null)
return NULL;

set = serializer.unmarshal(set);
return ((HashSet) set).toArray();
}

public Object[] SInter(String key1, String key2) {
Object set1 = persistence.get(key1);
Object set2 = persistence.get(key2);
if (set1 == null || set2 == null)
return NULL;

HashSet set1Ref = (HashSet) serializer.unmarshal(set1);
HashSet set2Ref = (HashSet) serializer.unmarshal(set2);
set1Ref.retainAll(set2Ref);
return set1Ref.toArray();
}

public Object[] SDiff(String key1, String key2) {
Object set1 = persistence.get(key1);
Object set2 = persistence.get(key2);
if (set1 == null || set2 == null)
return NULL;

HashSet set1Ref = (HashSet) serializer.unmarshal(set1);
HashSet set2Ref = (HashSet) serializer.unmarshal(set2);
set1Ref.removeAll(set2Ref);
return set1Ref.toArray();
}


// =================================================
// Sorted Set value
// =================================================

public void ZAdd(String key, Object... values) {
Object set = persistence.get(key);
if (set == null)
set = new TreeSet();
else
set = serializer.unmarshal(set);

TreeSet setRef = (TreeSet) set;
for (Object value : values)
setRef.add(value);
persistence.put(key, serializer.marshal(set));
}

public Object[] SRange(String key, Object from) {
Object set = persistence.get(key);
if (set == null)
return NULL;

set = serializer.unmarshal(set);
return ((TreeSet) set).tailSet(from).toArray();
}

}
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);