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("您是我的粉丝"); } } }
相关文章推荐
- 破解C++ Redistributable Package版本之谜
- redis 集群方案
- Redis命令操作详解
- Redis在游戏开发中的应用
- Linux上的Redis的安装和部署
- 用Redis实现分布式锁 与 实现任务队列
- jedispool 连 redis 高并发卡死 解决方案
- Tomcat+redis+nginx配置
- Redis3.0.5集群安装
- Redis 负载监控——开源项目redis-monitor
- Redis主备HA环境部署
- 【数据库】Ubuntu12.04安装配置Redis3.0
- redis配置文件样例(二)
- redis故障处理 process is already running or crashed
- Redis数据类型
- redis的maxmemory使用达到上限
- NoSQL之Redis学习笔记(一)
- redis cluster java client jedisCluster spring集成方法
- Linux服务器下搭建(jdk+mysql+tomcat+cmake+redis)
- 30个php操作redis常用方法代码例子