Java版的Redis (七)

2014-11-24 08:22:21 · 作者: · 浏览: 11
wers", "A");
redis.SAdd("users:C:followers", "A");

// User C follows B
redis.SAdd("users:C:following", "B");
redis.SAdd("users:B:followers", "C");


// 2.1 B send tweet
int tid = redis.Incr("tweets:next_id");
redis.Set("tweets:" + tid, "B publish hello");
redis.LPush("global:timeline", tid);
redis.LPush("users:B:timeline", tid);
for (Object follower : redis.SMembers("users:B:followers"))
redis.LPush("users:" + follower + ":timeline", tid);

// 2.2 C send tweet
tid = redis.Incr("tweets:next_id");
redis.Set("tweets:" + tid, "C publish world");
redis.LPush("global:timeline", tid);
redis.LPush("users:C:timeline", tid);
for (Object follower : redis.SMembers("users:C:followers"))
redis.LPush("users:" + follower + ":timeline", tid);


Object[] tids = redis.LRange("global:timeline", 0, 9);
String[] tweetids = new String[tids.length];
for (int i = 0; i < tids.length; i++)
tweetids[i] = "tweets:" + tids[i];
System.out.println(Arrays.toString(redis.MGet(tweetids)));
}

}
package com.cdai.studio.redis;

import java.util.Arrays;

public class RedisTest {

public static void main(String[] args) {

RedisDB redis = new RedisDB();

// 1.Create user follow relationship
redis.SAdd("users", "A", "B", "C");

// User A follows B, C
redis.SAdd("users:A:following", "B", "C");
redis.SAdd("users:B:followers", "A");
redis.SAdd("users:C:followers", "A");

// User C follows B
redis.SAdd("users:C:following", "B");
redis.SAdd("users:B:followers", "C");


// 2.1 B send tweet
int tid = redis.Incr("tweets:next_id");
redis.Set("tweets:" + tid, "B publish hello");
redis.LPush("global:timeline", tid);
redis.LPush("users:B:timeline", tid);
for (Object follower : redis.SMembers("users:B:followers"))
redis.LPush("users:" + follower + ":timeline", tid);

// 2.2 C send tweet
tid = redis.Incr("tweets:next_id");
redis.Set("tweets:" + tid, "C publish world");
redis.LPush("global:timeline", tid);
redis.LPush("users:C:timeline", tid);
for (Object follower : redis.SMembers("users:C:followers"))
redis.LPush("users:" + follower + ":timeline", tid);


Object[] tids = redis.LRange("global:timeline", 0, 9);
String[] tweetids = new String[tids.length];
for (int i = 0; i < tids.length; i++)
tweetids[i] = "tweets:" + tids[i];
System.out.println(Arrays.toString(redis.MGet(tweetids)));
}

}


5.需要注意的问题


byte数组的equals和hashcode默认实现比较对象地址的,要借助于Arrays的equals和hashcode方法。


String字符串序列化和反序列化时要注意编码格式的问题,编码解码时应该使用相同的编码。


HashSet上的操作,removeAll补集,retainAll交集,addAll并集。


6.更加强大的Redis


Redis自己实现了各种数据结构,可以非常方便地增删改查,并且效率很高。这里我们只是用
Java来简单的学习了下Redis基本功能,其实Redis还支持很多其他的高级功能,如消息订阅、
数据过期设置、事务、数据持久化。想要进一步学习的话可以试着用Java实现它们
作者:dc_726