您的位置:首页 > 数据库 > Redis

redis模拟微博用户关系

2015-11-25 14:30 609 查看
jweibo.uid_list list
jweibo.uid_info hash username createtime nic
jweibo.[uid].follow zset
jweibo.[uid].fans zset
package com.jredis.jwei;

import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.SortingParams;

import com.jredis.config.ConfigUtil;
import com.jredis.pool.JredisPool;
import com.jredis.typeutil.HashTypeUtil;
import com.jredis.typeutil.ListTypeUtil;
import com.jredis.typeutil.ZsetTypeUtil;

public class JSampleWeibo {

private static final String REDIS_HOST="REDIS_HOST";
private static final String REDIS_PORT="REDIS_PORT";
private static Jedis jedis;

@Before
public void before(){
jedis = JredisPool.getInstance().getJedis(ConfigUtil.getConfValue(REDIS_HOST),Integer.parseInt(ConfigUtil.getConfValue(REDIS_PORT)));
}

@After
public void after(){
JredisPool.getInstance().closeJedis(jedis, ConfigUtil.getConfValue(REDIS_HOST),Integer.parseInt(ConfigUtil.getConfValue(REDIS_PORT)));
}

public void regist(){
ListTypeUtil.lpush("jweibo:uid_list", "1");
HashMap<String, String> user1 = new HashMap();
user1.put("username", "liu");
user1.put("createtime", new Date().getTime()+"");
user1.put("nic", "刘先生");
HashTypeUtil.hmset("jweibo:1:uid_info", user1);

ListTypeUtil.lpush("jweibo:uid_list", "2");
HashMap<String, String> user2 = new HashMap();
user2.put("username", "tianht");
user2.put("createtime", new Date().getTime()+"");
user2.put("nic", "天河潭");
HashTypeUtil.hmset("jweibo:2:uid_info", user2);

ListTypeUtil.lpush("jweibo:uid_list", "3");
HashMap<String, String> user3 = new HashMap();
user3.put("username", "ban");
user3.put("createtime", new Date().getTime()+"");
user3.put("nic", "ban");
HashTypeUtil.hmset("jweibo:3:uid_info", user3);

ListTypeUtil.lpush("jweibo:uid_list", "4");
HashMap<String, String> user4 = new HashMap();
user4.put("username", "ban");
user4.put("createtime", new Date().getTime()+"");
user4.put("nic", "ban");
HashTypeUtil.hmset("jweibo:4:uid_info", user4);
}

public void follow(){  //关注用户
//用户1 关注用户2、3
ZsetTypeUtil.zadd("jweibo.1.follow", new Date().getTime(), "2");
ZsetTypeUtil.zadd("jweibo.2.fans", new Date().getTime(), "1");

ZsetTypeUtil.zadd("jweibo.1.follow", new Date().getTime(), "3");
ZsetTypeUtil.zadd("jweibo.3.fans", new Date().getTime(), "1");

//用户2 关注用户1
ZsetTypeUtil.zadd("jweibo.2.follow", new Date().getTime(), "1");
ZsetTypeUtil.zadd("jweibo.1.fans", new Date().getTime(), "2");

//用户3 关注用户2、4
ZsetTypeUtil.zadd("jweibo.3.follow", new Date().getTime(), "2");
ZsetTypeUtil.zadd("jweibo.2.fans", new Date().getTime(), "3");

ZsetTypeUtil.zadd("jweibo.3.follow", new Date().getTime(), "4");
ZsetTypeUtil.zadd("jweibo.4.fans", new Date().getTime(), "3");
}

public void getMyFollow(){	//查看我关注的人
String uid = "1";
//排序
//sort jweibo.1.follow by jweibo:*:uid_info->createtime desc get jweibo:*:uid_info->createtime
SortingParams parameter = new SortingParams();
parameter.alpha();
parameter.get("jweibo:*:uid_info->username");
parameter.by("jweibo:*:uid_info->createtime");
List list = jedis.sort("jweibo."+uid+".follow", parameter);
for(int i =0; i <list.size(); i++){
System.out.println(list.get(i));
}
//列表
Set set = ZsetTypeUtil.zrange("jweibo."+uid+".follow", 0, -1);
Iterator iter = set.iterator();
System.out.println("我关注的人("+ZsetTypeUtil.zcard("jweibo."+uid+".follow")+")");
while(iter.hasNext()){
String followUid = iter.next().toString();
HashMap userinfo = HashTypeUtil.hgetAll("jweibo:"+followUid+":uid_info");
System.out.println(userinfo);
}
}

public void getMyFans(){	//查看我的粉丝
String uid = "2";
//排序
//sort jweibo.1.follow by jweibo:*:uid_info->createtime desc get jweibo:*:uid_info->createtime
SortingParams parameter = new SortingParams();
parameter.alpha();
parameter.get("jweibo:*:uid_info->username");
parameter.by("jweibo:*:uid_info->createtime");
List list = jedis.sort("jweibo."+uid+".fans", parameter);
for(int i =0; i <list.size(); i++){
System.out.println(list.get(i));
}
}

@Test
public void getRelation(){ //判断我们的关系
String myid = "1";
String youid = "3";

String eachother = "jweibo."+myid+".eachother";
// 我的双向关注
long i = jedis.zinterstore(eachother, "jweibo."+myid+".follow", "jweibo."+youid+".follow");
System.out.println("我的双向关注:"+jedis.zrange(eachother, 0, -1));
if(null != jedis.zrank(eachother, youid) && jedis.zrank(eachother, youid)>-1){
System.out.println("我们相互关注");
}
//我的偶像
else if(null != jedis.zrank("jweibo."+myid+".follow", youid) &&jedis.zrank("jweibo."+myid+".follow", youid)>-1){
System.out.println("您是我的偶像");
}
//我的粉丝
else if(null != jedis.zrank("jweibo."+myid+".fans", youid)&& jedis.zrank("jweibo."+myid+".fans", youid)>-1){
System.out.println("您是我的粉丝");
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: