package org.zhss.demo.redis.set;
import redis.clients.jedis.Jedis;
import java.util.Set;
/**
* 朋友圈点赞案例
*/
public class MomentsDemo {
private Jedis jedis = new Jedis("127.0.0.1");
/**
* 对朋友圈进行点赞
* @param userId
* @param momentId
*/
public void likeMoment(long userId, long momentId) {
jedis.sadd("moment_like_users::" + momentId, String.valueOf(userId));
}
/**
* 对朋友圈取消点赞
* @param userId
* @param momentId
*/
public void dislikeMoment(long userId, long momentId) {
jedis.srem("moment_like_users::" + momentId, String.valueOf(userId));
}
/**
* 查看自己是否对某条朋友圈点赞过
* @param userId
* @param momentId
* @return
*/
public boolean hasLikedMoment(long userId, long momentId) {
return jedis.sismember("moment_like_users::" + momentId, String.valueOf(userId));
}
/**
* 获取你的一条朋友圈有哪些人点赞了
* @param momentId
* @return
*/
public Set<String> getMomentLikeUsers(long momentId) {
return jedis.smembers("moment_like_users::" + momentId);
}
/**
* 获取你的一条朋友圈被几个人点赞了
* @param momentId
* @return
*/
public long getMomentLikeUsersCount(long momentId) {
return jedis.scard("moment_like_users::" + momentId);
}
public static void main(String[] args) throws Exception {
MomentsDemo demo = new MomentsDemo();
// 你的用户id
long userId = 11;
// 你的朋友圈id
long momentId = 151;
// 你的朋友1的用户id
long friendId = 12;
// 你的朋友2的用户id
long otherFriendId = 13;
// 你的朋友1对你的朋友圈进行点赞,再取消点赞
demo.likeMoment(friendId, momentId);
demo.dislikeMoment(friendId, momentId);
boolean hasLikedMoment = demo.hasLikedMoment(friendId, momentId);
System.out.println("朋友1刷朋友圈,看到是否对你的朋友圈点赞过:" + (hasLikedMoment ? "是" : "否"));
// 你的朋友2对你的朋友圈进行点赞
demo.likeMoment(otherFriendId, momentId);
hasLikedMoment = demo.hasLikedMoment(otherFriendId, momentId);
System.out.println("朋友2刷朋友圈,看到是否对你的朋友圈点赞过:" + (hasLikedMoment ? "是" : "否"));
// 你自己刷朋友圈,看自己的朋友圈的点赞情况
Set<String> momentLikeUsers = demo.getMomentLikeUsers(momentId);
long momentLikeUsersCount = demo.getMomentLikeUsersCount(momentId);
System.out.println("你自己刷朋友圈,看到自己发的朋友圈被" + momentLikeUsersCount + "个人点赞了,点赞的用户为:" + momentLikeUsers);
}
}
dftefdfd
package org.zhss.demo.redis.set;
import redis.clients.jedis.Jedis;
import java.util.Set;
/**
* 微博案例
*/
public class MicroBlogDemo {
private Jedis jedis = new Jedis("127.0.0.1");
/**
* 关注别人
* @param userId
* @param followUserId
*/
public void follow(long userId, long followUserId) {
jedis.sadd("user::" + followUserId + "::followers", String.valueOf(userId));
jedis.sadd("user::" + userId + "::follow_users", String.valueOf(followUserId));
}
/**
* 取消关注别人
* @param userId
* @param followUserId
*/
public void unfollow(long userId, long followUserId) {
jedis.srem("user::" + followUserId + "::followers", String.valueOf(userId));
jedis.srem("user::" + userId + "::follow_users", String.valueOf(followUserId));
}
/**
* 查看有哪些人关注了自己
* @param userId
* @return
*/
public Set<String> getFollowers(long userId) {
return jedis.smembers("user::" + userId + "::followers");
}
/**
* 查看关注了自己的人数
* @param userId
* @return
*/
public long getFollowersCount(long userId) {
return jedis.scard("user::" + userId + "::followers");
}
/**
* 查看自己关注了哪些人
* @param userId
* @return
*/
public Set<String> getFollowUsers(long userId) {
return jedis.smembers("user::" + userId + "::follow_users");
}
/**
* 查看自己关注的人数
* @param userId
* @return
*/
public long getFollowUsersCount(long userId) {
return jedis.scard("user::" + userId + "::follow_users");
}
/**
* 获取用户跟其他用户之间共同关注的人有哪些
* @param userId
* @param otherUserId
* @return
*/
public Set<String> getSameFollowUsers(long userId, long otherUserId) {
return jedis.sinter("user::" + userId + "::follow_users",
"user::" + otherUserId + "::follow_users");
}
/**
* 获取给我推荐的可关注人
* 我关注的某个好友关注的一些人,我没关注那些人,此时推荐那些人给我
* @param userId
* @return
*/
public Set<String> getRecommendFollowUsers(long userId, long otherUserId) {
return jedis.sdiff("user::" + otherUserId + "::follow_users",
"user::" + userId + "::follow_users");
}
public static void main(String[] args) throws Exception {
MicroBlogDemo demo = new MicroBlogDemo();
// 定义用户id
long userId = 31;
long friendId = 32;
long superstarId = 33;
long classmateId = 34;
long motherId = 35;
// 定义关注的关系链
demo.follow(userId, friendId);
demo.follow(userId, motherId);
demo.follow(userId, superstarId);
demo.follow(friendId, superstarId);
demo.follow(friendId, classmateId);
// 明星看看自己被哪些人关注了
Set<String> superstarFollowers = demo.getFollowers(superstarId);
long superstarFollowersCount = demo.getFollowersCount(superstarId);
System.out.println("明星被哪些人关注了:" + superstarFollowers + ",关注自己的人数为:" + superstarFollowersCount);
// 朋友看看自己被哪些人关注了,自己关注了哪些人
Set<String> friendFollowers = demo.getFollowers(friendId);
long friendFollowersCount = demo.getFollowersCount(friendId);
Set<String> friendFollowUsers = demo.getFollowUsers(friendId);
long friendFollowUsersCount = demo.getFollowUsersCount(friendId);
System.out.println("朋友被哪些人关注了:" + friendFollowers + ",被多少人关注了:" + friendFollowersCount
+ ",朋友关注了哪些人:" + friendFollowUsers + ",关注了多少人:" + friendFollowUsersCount);
// 查看我自己关注了哪些
Set<String> myFollowUsers = demo.getFollowUsers(userId);
long myFollowUsersCount = demo.getFollowUsersCount(userId);
System.out.println("我关注了哪些人:" + myFollowUsers + ", 我关注的人数:" + myFollowUsersCount);
// 获取我和朋友共同关注的好友
Set<String> sameFollowUsers = demo.getSameFollowUsers(userId, friendId);
System.out.println("我和朋友共同关注的人有哪些:" + sameFollowUsers);
// 获取推荐给我的可以关注的人,就是我关注的人关注的其他人
Set<String> recommendFollowUsers = demo.getRecommendFollowUsers(userId, friendId);
System.out.println("推荐给我的关注的人有哪些:" + recommendFollowUsers);
}
}
testet
package org.zhss.demo.redis.hash;
import redis.clients.jedis.Jedis;
import java.util.HashMap;
import java.util.Map;
/**
* 博客网站案例
*/
public class BlogDemo {
private Jedis jedis = new Jedis("127.0.0.1");
/**
* 获取博客id
* @return
*/
public long getBlogId() {
return jedis.incr("blog_id_counter");
}
/**
* 发表一篇博客
*/
public boolean publishBlog(long id, Map<String, String> blog) {
if(jedis.hexists("article::" + id, "title")) {
return false;
}
blog.put("content_length", String.valueOf(blog.get("content").length()));
jedis.hmset("article::" + id, blog);
return true;
}
/**
* 查看一篇博客
* @param id
* @return
*/
public Map<String, String> findBlogById(long id) {
Map<String, String> blog = jedis.hgetAll("article::" + id);
incrementBlogViewCount(id);
return blog;
}
/**
* 更新一篇博客
*/
public void updateBlog(long id, Map<String, String> updatedBlog) {
String updatedContent = updatedBlog.get("content");
if(updatedContent != null && !"".equals(updatedContent)) {
updatedBlog.put("content_length", String.valueOf(updatedContent.length()));
}
jedis.hmset("article::" + id, updatedBlog);
}
/**
* 对博客进行点赞
* @param id
*/
public void incrementBlogLikeCount(long id) {
jedis.hincrBy("article::" + id, "like_count", 1);
}
/**
* 增加博客浏览次数
* @param id
*/
public void incrementBlogViewCount(long id) {
jedis.hincrBy("article::" + id, "view_count", 1);
}
public static void main(String[] args) {
BlogDemo demo = new BlogDemo();
// 发表一篇博客
long id = demo.getBlogId();
Map<String, String> blog = new HashMap<String, String>();
blog.put("id", String.valueOf(id));
blog.put("title", "我喜欢学习Redis");
blog.put("content", "学习Redis是一件特别快乐的事情");
blog.put("author", "石杉");
blog.put("time", "2020-01-01 10:00:00");
demo.publishBlog(id, blog);
// 更新一篇博客
Map<String, String> updatedBlog = new HashMap<String, String>();
updatedBlog.put("title", "我特别的喜欢学习Redis");
updatedBlog.put("content", "我平时喜欢到官方网站上去学习Redis");
demo.updateBlog(id, updatedBlog);
// 有别人点击进去查看你的博客的详细内容,并且进行点赞
Map<String, String> blogResult = demo.findBlogById(id);
System.out.println("查看博客的详细内容:" + blogResult);
demo.incrementBlogLikeCount(id);
// 你自己去查看自己的博客,看看浏览次数和点赞次数
blogResult = demo.findBlogById(id);
System.out.println("自己查看博客的详细内容:" + blogResult);
}
}