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