Java版的Redis (三)

2014-11-24 08:22:21 · 作者: · 浏览: 6
if (list == null)
list = new LinkedList();
else
list = serializer.unmarshal(list);

LinkedList listRef = (LinkedList) list;
for (Object value : values)
listRef.addFirst(value);
persistence.put(key, serializer.marshal(list));
}

public void RPush(String key, Object... values) {
Object list = persistence.get(key);
if (list == null)
list = new LinkedList();
else
list = serializer.unmarshal(list);

LinkedList listRef = (LinkedList) list;
for (Object value : values)
listRef.addLast(value);
persistence.put(key, serializer.marshal(list));
}

public Object[] LRange(String key, int start, int end) {
Object list = persistence.get(key);
if (list == null)
return NULL;

LinkedList listRef = (LinkedList) serializer.unmarshal(list);
if (end > listRef.size())
end = listRef.size();
return listRef.subList(start, end).toArray();
}


// =================================================
// Unsorted Set value
// =================================================

public void SAdd(String key, Object... values) {
Object set = persistence.get(key);
if (set == null)
set = new HashSet();
else
set = serializer.unmarshal(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();
}

}
[java] view plaincopyprint package com.cdai.studio.redis;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.Arrays;

class Serializer {

Object marshal(Object object) {
if (object == null)
return null;
return new BytesWr