如何使用Redis实现点赞取消点赞
发表于:2024-10-05 作者:千家信息网编辑
千家信息网最后更新 2024年10月05日,这篇文章将为大家详细讲解有关如何使用Redis实现点赞取消点赞,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。代码实现:/** * * @param
千家信息网最后更新 2024年10月05日如何使用Redis实现点赞取消点赞
这篇文章将为大家详细讲解有关如何使用Redis实现点赞取消点赞,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
代码实现:
/** * * @param userId 点赞的人 * @param type 点赞与取消点赞的表示 * @param textId 文章ID * @param entityUserId -- 被点赞的人,文章作者 */ private void like(long userId,int type,int textId,long entityUserId){ redisTemplate.execute(new SessionCallback() { @Override public Object execute(RedisOperations operations) throws DataAccessException { String entityLikeKey = RedisKeyUtil.getEntityLikeKey(type, textId); String userLikeKey = RedisKeyUtil.getUserLikeKey(entityUserId); boolean isMember = redisTemplate.opsForSet().isMember(entityLikeKey, userId); //多个更新操作,需要事务 operations.multi(); if (isMember) { //取消赞 redisTemplate.opsForSet().remove(entityLikeKey, userId); redisTemplate.opsForValue().decrement(userLikeKey); } else { //点赞 redisTemplate.opsForSet().add(entityLikeKey, userId); redisTemplate.opsForValue().increment(userLikeKey); } return operations.exec(); } }); } /** *查询某实体(帖子,评论等)点赞数量 * @param type 1点赞,2评论。0表示取消点赞 * @param textId * @return */ private long findEntityLikeCount(int type, int textId){ String entityLikeKey = RedisKeyUtil.getEntityLikeKey(type, textId); return redisTemplate.opsForSet().size(entityLikeKey); } /** * 查询某人对某文章的点赞状态 * @param textId 帖子ID * @param userId * @return */ private int findEntityLikeStatus(int textId,long userId){ String entityLikeKey = RedisKeyUtil.getEntityLikeKey(1, textId); //此处返回int,是为了进行扩展。比如扩展踩,为止2.等等情况 return redisTemplate.opsForSet().isMember(entityLikeKey,userId)?1:0; } /** * 查询某个用户获得赞,用于在个人主页查看收获了多少赞 * @param userId * @return */ private int findUserLikeCount(long userId){ String userLikeKey = RedisKeyUtil.getUserLikeKey(userId); Integer count = (Integer) redisTemplate.opsForValue().get(userLikeKey); // count.intValue()数据的整数形式; return count==null?0:count.intValue(); }
Redis–key设置
public class RedisKeyUtil { private static final String SPLIT = ":"; private static final String PREFIX_ENTITY_LIKE = "like:entity"; private static final String PREFIX_USER_LIKE = "like:user"; private static final String PREFIX_USER_COMMENTS="comments:user"; /** *某个实体收到的赞,如帖子, * like:entity:entityType:entityId -> set(userId) 对应set,存入userId * @param entityType * @param entityId * @return */ public static String getEntityLikeKey(int entityType, int entityId) { return PREFIX_ENTITY_LIKE + entityType + SPLIT + entityId; } *某个用户收到的总赞数 * like:user:userId ->long * @param userId public static String getUserLikeKey(long userId) { return PREFIX_USER_LIKE + SPLIT + userId; * 汇总某个帖子的评论数量 public static String getUserCommentsKey(int articleId) { return PREFIX_USER_COMMENTS + SPLIT + articleId;
关于"如何使用Redis实现点赞取消点赞"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
帖子
文章
篇文章
查询
评论
实体
数量
更多
用户
不错
实用
个人
个人主页
主页
事务
代码
作者
内容
多个
形式
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
广告软件开发可行性报告
金融科技与互联网金融用书
长安城服务器刷d5
固原软件开发价格走势
方舟手机版如何下载服务器
旧平板改造服务器可以做什么
网络安全专家秦安
云服务器如何防护
数据库复试难度
求生之路自己的服务器
网络安全两会热议
java 软件开发平台
网络安全作业怎么做
数据库重建索引软件
自动化软件开发技术工程师
网络安全怎么盈利
网络安全技术科工作任务
电脑游戏服务器图片
和林县国家网络安全宣传
校园网络安全宣传周活动主持
关于保护自身网络安全的知识
网络安全竞赛基地职业技能
安全代理服务器品牌
建筑软件开发开发
医保数据网络安全自查表填写
数据库技术文件管理阶段
红客网络安全创业者
软件开发管理专业介绍
电脑游戏服务器图片
网络安全纳入医院绩效考核