广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >使用Redis实现点赞取消点赞的详细代码
  • 569
分享到

使用Redis实现点赞取消点赞的详细代码

2024-04-02 19:04:59 569人浏览 独家记忆
摘要

前言 异步实现 代码实现: private void like(long userId,int type,int textId,long 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();
            }
        });

    }

    
    private long findEntityLikeCount(int type, int textId){
        String entityLikeKey = RedisKeyUtil.getEntityLikeKey(type, textId);
        return redisTemplate.opsForSet().size(entityLikeKey);
    }

    
    private int findEntityLikeStatus(int textId,long userId){
        String entityLikeKey = RedisKeyUtil.getEntityLikeKey(1, textId);
        //此处返回int,是为了进行扩展。比如扩展踩,为止2.等等情况
        return redisTemplate.opsForSet().isMember(entityLikeKey,userId)?1:0;
    }

    
    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";
    
    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实现点赞取消点赞的文章就介绍到这了,更多相关Redis实现点赞取消点赞内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 使用Redis实现点赞取消点赞的详细代码

本文链接: https://www.lsjlt.com/news/143128.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 使用Redis实现点赞取消点赞的详细代码
    前言 异步实现 代码实现: private void like(long userId,int type,int textId,long entityUserId){ ...
    99+
    2022-11-13
  • 如何使用Redis实现点赞取消点赞
    这篇文章将为大家详细讲解有关如何使用Redis实现点赞取消点赞,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。代码实现:    private void&n...
    99+
    2023-06-29
  • 使用 Redis 缓存实现点赞和取消点赞的示例代码
    点赞功能是很多平台都会提供的一个功能,那么,我们要如何实现点赞和取消点赞呢? 这篇文章总结了我在项目中实现点赞的方法。 缓存 vs 数据库? 首先我们要考虑的是数据要放到哪里,很多...
    99+
    2022-11-11
  • Redis高效实现点赞、取消点赞的步骤
    本篇内容主要讲解“Redis高效实现点赞、取消点赞的步骤”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Redis高效实现点赞、取消点赞的步骤”吧!一、Redis...
    99+
    2022-10-18
  • Redis中怎么实现点赞、取消点赞功能
    Redis中怎么实现点赞、取消点赞功能,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、Redis 缓存设计及实现1.1 Redis 安装及运...
    99+
    2022-10-18
  • Spring Cloud中怎么使用Redis实现点赞和取消点赞功能
    Spring Cloud中怎么使用Redis实现点赞和取消点赞功能,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、Redis 缓存设计及实现...
    99+
    2022-10-18
  • 利用Redis实现点赞功能的示例代码
    目录mysql 和 Redis优缺点1、Redis 缓存设计及实现部分代码如下Redis 存储结构如图2、数据库设计3、开启定时任务持久化存储到数据库部分代码如下提到点赞,大家一想到的是不是就是朋友圈的点赞呀?其实点赞对...
    99+
    2022-06-28
    Redis 点赞功能 Redis 点赞
  • AndroidFlutter实现点赞效果的示例代码
    目录前言绘制小手完整源码前言 点赞这个动作不得不说在社交、短视频等App中实在是太常见了,当用户手指按下去的那一刻,给用户一个好的反馈效果也是非常重要的,这样用户点起赞来才会有一种强...
    99+
    2022-11-13
  • 基于redis实现的点赞功能设计思路详解
    前言 点赞其实是一个很有意思的功能。基本的设计思路有大致两种, 一种自然是用mysql等 数据库直接落地存储, 另外一种就是利用点赞的业务特征来扔到redis(或memcache)中, 然后离线刷回mysq...
    99+
    2022-06-04
    详解 思路 功能设计
  • AutoJs4.1.0实现抖音极速版点赞加关注的代码是什么
    本篇内容介绍了“AutoJs4.1.0实现抖音极速版点赞加关注的代码是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,...
    99+
    2022-10-19
  • Redis 使用 List 实现消息队列的优缺点
    目录什么是消息队列消息队列满足哪些特性消息有序性重复消息处理可靠性List 实现消息队列LPUSHRPOP实时消费问题重复消费消息可靠性需要注意的是Redission 实战添加依赖J...
    99+
    2022-11-12
  • HTML5实现锚点时请使用id取代name的示例分析
    这篇文章将为大家详细讲解有关HTML5实现锚点时请使用id取代name的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 HTML5已...
    99+
    2022-10-19
  • 怎么使用纯CSS代码实现圆点错觉的效果
    这篇文章将为大家详细讲解有关怎么使用纯CSS代码实现圆点错觉的效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。   代码解读   此项目无用户自定义的dom元素,利...
    99+
    2022-10-19
  • 如何使用vbs实现添加网站到安全站点.设置安全站点打开ActiveX时提示.去页眉页脚的vbs代码
    这篇文章将为大家详细讲解有关如何使用vbs实现添加网站到安全站点.设置安全站点打开ActiveX时提示.去页眉页脚的vbs代码,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。代码如下:' Const...
    99+
    2023-06-08
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作