成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識(shí)庫 > springboot +redis 實(shí)現(xiàn)點(diǎn)贊、瀏覽、收藏、評(píng)論等數(shù)量的增減操作

springboot +redis 實(shí)現(xiàn)點(diǎn)贊、瀏覽、收藏、評(píng)論等數(shù)量的增減操作

熱門標(biāo)簽:廊坊外呼系統(tǒng)在哪買 地圖標(biāo)注工廠入駐 一個(gè)地圖標(biāo)注多少錢 b2b外呼系統(tǒng) 400電話辦理的口碑 南京手機(jī)外呼系統(tǒng)廠家 高碑店市地圖標(biāo)注app 臺(tái)灣電銷 四川穩(wěn)定外呼系統(tǒng)軟件

springboot +redis 實(shí)現(xiàn)點(diǎn)贊、瀏覽、收藏、評(píng)論等數(shù)量的增減操作

前言

第一次寫博客,記錄一下:

最近做了一個(gè)帖子的收藏、點(diǎn)贊數(shù)量的功能,其實(shí)之前也做過類似的功能,因?yàn)橹耙恢笔褂玫膍ysql 總是感覺對(duì)于這種頻繁需要改變的值,不應(yīng)該給予Mysql過大的壓力,本文章采用的是redis 做了持久化。下面貼出關(guān)鍵代碼:DataResponse是項(xiàng)目中使用的結(jié)果封裝實(shí)體類;forumDTO是此功能的參數(shù)實(shí)體,如果有需要請(qǐng)留言。

常量如下:

 private static final String DEFAULT_VALUE = "0:0:0:0:0:0";
  public static final Byte BYTE_ZERO = 0;
  public static final Byte BYTE_ONE = 1;
  public static final Byte BYTE_TWO = 2;
  public static final Byte BYTE_THREE = 3;
  public static final Byte BYTE_FOUR = 4;
  public static final Byte BYTE_FIVE = 5;
  public static final Byte BYTE_SIX = 6;
 @Override
  public DataResponse keepNum(ForumDTO forumDTO) {
    //將帖子id 設(shè)置為 key
    String key = forumDTO.getPostId().toString();
    //get 用戶id
    String userId = forumDTO.getUserId();
    String count, newCount;
    //綁定數(shù)據(jù)集key
    BoundHashOperationsString, Object, Object> post = redisTemplate.boundHashOps("post:");
    //獲取hKey
    // count: 0論壇-點(diǎn)贊量 1評(píng)論量 2收藏量 3瀏覽 4評(píng)論-點(diǎn)贊量
    if (null == post.get(key)) {
      //無則set
      post.put(key, DEFAULT_VALUE);
      //再取出來賦值給 count
      count = post.get(key).toString();
    } else {
      //有直接賦值 count
      count = post.get(key).toString();
    }
    // operationType 1 瀏覽 2 帖子點(diǎn)贊 3 收藏 4評(píng)論-點(diǎn)贊
    String prefix;
    switch (forumDTO.getOperationType()) {
      case 1:
        //記錄瀏覽次數(shù) OPERATIONTYPE 1 : 記錄瀏覽次數(shù)
        newCount = resetValue(count, BYTE_THREE, true);
        post.put(key, newCount);
        break;
      case 2:
        //記錄帖子-點(diǎn)贊
        prefix = "thumbs:post";
        switch (forumDTO.getClickType()) {
          case 0:
            /**
             * OPERATIONTYPE 2: + CLICKTYPE 0 = 給帖子點(diǎn)贊
             * 0點(diǎn)贊
             * 從redis中獲取數(shù)量 帖子d 例如:177488r88t78r78r7
             * count: 0論壇-點(diǎn)贊量 1評(píng)論量 2收藏量 3瀏覽 4評(píng)論-點(diǎn)贊量
             * 避免每種數(shù)量都去查詢r(jià)edis 直接通過 redis value 記錄所有的數(shù)量
             * 獲取加 +1 后的值
             */
            if (redisTemplate.opsForSet().isMember(prefix + ":" + key, prefix + ":" + userId)) {
              return DataResponse.fail("不能重復(fù)點(diǎn)贊哦");
            } else {
              redisTemplate.opsForSet().add(prefix + ":" + key, prefix + ":" + userId);
            }
            newCount = resetValue(count, BYTE_ZERO, true);
            //set to redis
            post.put(key, newCount);
            break;
          case 1:
            //OPERATIONTYPE 2: + CLICKTYPE 1 = 取消帖子點(diǎn)贊
            //1取消帖子點(diǎn)贊
            if (!redisTemplate.opsForSet().isMember(prefix + ":" + key, prefix + ":" + userId)) {
              //重復(fù)處理
              return DataResponse.fail("不能重復(fù)取消哦");
            } else {
              //刪除
              redisTemplate.opsForSet().remove(prefix + ":" + key, prefix + ":" + userId);
            }
            newCount = resetValue(count, BYTE_ZERO, false);
            post.put(key, newCount);
            break;
        }
        break;
      case 3:
        prefix = "collection:post";
        ListMqMessage> sendList = new LinkedList>();
        MqMessage mqMessage = new MqMessage();
        switch (forumDTO.getClickType()) {
          //OPERATIONTYPE 3 + CLICKTYPE 0 = 記錄收藏
          case 0:
            //數(shù)量+1
            //根據(jù)用戶id + 帖子id 查詢r(jià)edis 數(shù)據(jù)
            if (redisTemplate.opsForSet().isMember(prefix + ":" + key, prefix + ":" + userId)) {
              //重復(fù)處理
              return DataResponse.fail("不能重復(fù)收藏哦");
            }
            //add
            redisTemplate.opsForSet().add(prefix + ":" + key, prefix + ":" + userId);
            //set to redis
            newCount = resetValue(count, BYTE_TWO, true);
            post.put(key, newCount);
            mqMessage.setType(new Byte("9"));
            mqMessage.setSenderId(userId);
            mqMessage.setPostId(forumDTO.getPostId());
            sendList.add(mqMessage);
            this.sendMq.send(sendList);
            break;
          //OPERATIONTYPE 3 + CLICKTYPE 1 = 取消收藏
          case 1:
            //取消收藏
            //嘗試從redis取出當(dāng)前用戶是否已經(jīng)收藏
            if (!redisTemplate.opsForSet().isMember(prefix + ":" + key, prefix + ":" + userId)) {
              //重復(fù)處理
              return DataResponse.fail("不能重復(fù)取消哦");
            }
            //刪除
            redisTemplate.opsForSet().remove(prefix + ":" + key, prefix + ":" + userId);
            newCount = resetValue(count, BYTE_TWO, false);
            post.put(key, newCount);
            mqMessage.setType(new Byte("10"));
            mqMessage.setSenderId(userId);
            mqMessage.setPostId(forumDTO.getPostId());
            sendList.add(mqMessage);
            this.sendMq.send(sendList);
            break;
        }
        break;
      case 4:
        //記錄評(píng)論-點(diǎn)贊
        // OPERATIONTYPE 4: + CLICKTYPE 0 = 給評(píng)論點(diǎn)贊
        if (null == forumDTO.getCommentId()) {
          return DataResponse.fail("評(píng)論id不能為空");
        }
        String commentNum, ckey = forumDTO.getCommentId().toString();
        BoundHashOperationsString, Object, Object> comment = redisTemplate.boundHashOps("post:comment");
        if (null == comment.get(ckey)) {
          //無則set
          comment.put(ckey, "0");
          //再取出來賦值給 count
          commentNum = comment.get(ckey).toString();
        } else {
          //有直接賦值 count
          commentNum = comment.get(ckey).toString();
        }
        //贊評(píng)論
        prefix = "thumbs:comment";
        switch (forumDTO.getClickType()) {
          case 0:
            /**
             * 0點(diǎn)贊
             * 從redis中獲取數(shù)量 帖子d 例如:177488r88t78r78r7
             * count: 0論壇-點(diǎn)贊量 1評(píng)論量 2收藏量 3瀏覽 4評(píng)論-點(diǎn)贊量
             * 避免每種數(shù)量都去查詢r(jià)edis 直接通過 redis value 記錄所有的數(shù)量
             * 獲取加 + 后的值
             */
            if (redisTemplate.opsForSet().isMember(prefix + ":" + ckey, prefix + ":" + userId)) {
              return DataResponse.fail("不能重復(fù)點(diǎn)贊哦");
            } else {
              redisTemplate.opsForSet().add(prefix + ":" + ckey, prefix + ":" + userId);
            }
            //set to redis
            comment.put(ckey, cResetValue(commentNum, true));
            break;
          case 1:
            //1取消評(píng)論點(diǎn)贊
            if (!redisTemplate.opsForSet().isMember(prefix + ":" + ckey, prefix + ":" + userId)) {
              //重復(fù)處理
              return DataResponse.fail("不能重復(fù)取消哦");
            } else {
              //刪除
              redisTemplate.opsForSet().remove(prefix + ":" + ckey, prefix + ":" + userId);
            }
            newCount = cResetValue(commentNum, false);
            comment.put(ckey, newCount);
            break;
        }
        break;
      default:
        DataResponse.fail(ResponseEnum.FAILED);
    }
    return DataResponse.success(ResponseEnum.SUCCESS);
  }

 

resetValue代碼:

 /**
   * 功能描述: br>
   * 〈點(diǎn)贊數(shù)、收藏?cái)?shù)等數(shù)量重置〉
   * @param val  數(shù)組
   * @param type  0帖子點(diǎn)贊量 1評(píng)論量 2收藏量 3瀏覽 4評(píng)論點(diǎn)贊量
   * @param isPlus 是否增加數(shù)量 true +  false -
   * @Return: java.lang.String
   * @Author:王震
   * @Date: 2020/8/5 10:27
   * StringUtils包:import org.apache.commons.lang3.StringUtils;
   * 可以使用jdk的包替代split方法;但jdk的包需要驗(yàn)證正則,效率較低。
   */
  private String resetValue(String val, int j, boolean isPlus) {
    String[] value = StringUtils.split(val, ":");
    Long temp = Long.valueOf(value[j]);
    StringBuffer sb = new StringBuffer(16);
    if (isPlus) {
      temp += 1;
    } else {
      temp -= 1;
    }
    value[j] = temp.toString();
    for (int i = 0, len = value.length; i  len; i++) {
      if (i != len - 1) {
        sb.append(value[i]).append(":");
      }else {
        sb.append(value[i]);
      }
    }
    return sb.toString();
  }

總結(jié)

到此這篇關(guān)于springboot +redis 實(shí)現(xiàn)點(diǎn)贊、瀏覽、收藏、評(píng)論等數(shù)量的增減操作的文章就介紹到這了,更多相關(guān)springboot +redis實(shí)現(xiàn)點(diǎn)贊收藏評(píng)論內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 基于springboot微信公眾號(hào)開發(fā)(微信自動(dòng)回復(fù))
  • SpringBoot實(shí)現(xiàn)評(píng)論回復(fù)功能(數(shù)據(jù)庫設(shè)計(jì))

標(biāo)簽:定州 泰州 拉薩 伊春 河源 南寧 甘南 畢節(jié)

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《springboot +redis 實(shí)現(xiàn)點(diǎn)贊、瀏覽、收藏、評(píng)論等數(shù)量的增減操作》,本文關(guān)鍵詞  springboot,+redis,實(shí)現(xiàn),點(diǎn)贊,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《springboot +redis 實(shí)現(xiàn)點(diǎn)贊、瀏覽、收藏、評(píng)論等數(shù)量的增減操作》相關(guān)的同類信息!
  • 本頁收集關(guān)于springboot +redis 實(shí)現(xiàn)點(diǎn)贊、瀏覽、收藏、評(píng)論等數(shù)量的增減操作的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    免费在线观看视频一区| 国产九九在线观看| 欧美日韩视频免费在线观看| 国产精品久久久久9999爆乳| 五月天综合激情网| 国产香蕉久久| 国v精品久久久网| 老司机成人免费视频| av天天在线| 亚洲日韩欧美视频| 九九九精品视频| 国产在线视频自拍| 蜜臀av一区二区在线免费观看| 国产精品777| 美女爽到高潮91| 国产三级精品网站| 国产一级18片视频| 成人春色在线观看免费网站| 欧美一区二区三区久久久| 最近最好的中文字幕2019免费| 日韩亚洲欧美中文三级| 中文字幕亚洲综合久久菠萝蜜| 国产精品乱码久久久| 欧美精品一区二区在线播放| 国产探花一区在线观看| 免费中文字幕视频| 久久精品在线免费视频| 欧美三级免费| 国产亚洲精品bt天堂精选| 亚洲成人网在线播放| 国产乱子伦三级在线播放| 国产精品久久久久9999爆乳| 亚洲国产一区二区三区在线观看| 日本欧美韩国一区三区| 成人免费观看网址| 高清1区2区| 首播影院在线观看免费观看电视| 欧美成人一区二免费视频软件| 久久成人福利| 国产精品一二三在线| 午夜av在线播放| 亚洲国产精品www| 2018中文字幕在线观看| 人妻丰满熟妇av无码区app| 蜜臀av性久久久久蜜臀av| 青草草在线视频| 久久久三级国产网站| 成人a视频在线观看| 白白色免费视频| 国产亚洲视频系列| 成人羞羞视频免费| 熟女俱乐部一区二区视频在线| av动漫在线免费观看| 男人的天堂va在线| 欧美精品日韩在线| 四虎精品成人免费网站| 九九热爱视频精品视频高清| 伊人久久中文字幕| 一个人免费观看在线视频www| 中文字幕一区二区三区视频| sm在线播放| 影音先锋人妻啪啪av资源网站| 亚洲国产欧美另类丝袜| a在线观看免费视频| 国产精品久久久久四虎| 男人操女人下面视频| 蜜桃av噜噜一区二区三区麻豆| 狠狠色狠色综合曰曰| 国产主播自拍av| 色诱亚洲精品久久久久久| 日韩网站在线免费观看| 亚洲高清不卡一区| 韩国中文字幕hd久久精品| 91亚洲精华国产精华精华液| 91福利资源站| 中文字幕最新精品| 精品美女在线观看| 欧美高清自拍一区| 日韩一区欧美二区| 精品无码国产一区二区三区av| 国产日韩在线一区| 国产美女精品人人做人人爽| 亚洲性色视频| 网站黄色在线观看| v片在线观看| 精品国产免费人成网站| 亚洲国产日韩在线人成电影| 国产又大又黄又爽| 欧美一区二区三区爱爱| 国产精品天天av精麻传媒| 成人爽a毛片免费啪啪动漫| 特级西西人体4444xxxx| 毛片电影在线| 视频成人永久免费视频| 欧美亚洲日本一区| 日韩电影免费网址| 日本黄色小说视频| 国产剧情一区二区在线观看| 国产sm精品调教视频网站| 天天躁日日躁狠狠躁欧美| 粗大黑人巨茎大战欧美成人| 欧洲精品毛片网站| 最新国产精品亚洲| 午夜欧美大片免费观看| 狂野欧美一区| 久久久97精品| 欧美亚洲网站| 亚洲精品国产精品久久| 黄色一级大片在线免费看国产一| 亚洲欧美综合乱码精品成人网| 久久久精品有限公司| 激情综合色综合啪啪开心| 国产日本欧美一区二区| 日韩黄色在线播放| 91欧美国产| 免费大片黄在线观看视频网站| 国产一区二区三区精品在线观看| 色综合手机在线| 亚洲成人自拍网| 超碰在线免费97| 三级小说一区| 久久久久久久久97黄色工厂| 亚洲va在线va天堂| japan高清日本乱xxxxx| 亚洲国产精品成人久久蜜臀| 国产区一区二区三| 欧美三级在线| 亚洲精品乱码久久久久久久久| 日韩二区三区四区| 日韩av电影免费观看| 欧美区一区二区| 丝袜美腿亚洲一区| 成人国产精品一区| av片在线观看免费| 7777精品伊人久久久大香线蕉| 日韩精品在线观看视频| 91精品国产乱码久久久久久蜜臀| 国产在线一区二区综合免费视频| 成人黄色av电影| 在线观看免费不卡av| 宅男噜噜噜66一区二区| 超碰免费公开在线| 国产精品久久久久久久天堂第1集| 国产丝袜美腿一区二区三区| 亚洲精品成人电影| 亚洲大胆精品| 免费在线观看黄色网| 国内在线免费高清视频| 紧缚捆绑精品一区二区| 久久久久成人精品无码中文字幕| 欧美另类极品videosbest最新版本| 国产精品一区三区在线观看| 99久久国产综合精品五月天喷水| 久久久久久久九九九九| 精品视频偷偷看在线观看| 欧美激情一区二区三区久久久| 欧美日韩在线影院| 欧美成人一区二免费视频软件| 国产日韩一区二区| 久久66热这里只有精品| 国产成人精品日本亚洲| 毛片在线视频观看| 一区二区三区在线高清| 懂色av色香蕉一区二区蜜桃| 国产喂奶挤奶一区二区三区| 日本污视频网站| 日日夜夜国产| 在线精品亚洲一区二区不卡| 久久av高潮av无码av喷吹| 黄色一区二区三区四区| 四虎国产精品永久在线| 国产国产精品| 一区二区三区波多野结衣在线观看| 99热播精品免费| 国产精品成人一区二区三区吃奶| av手机在线看| 成人涩涩免费视频| 欧美韩国日本精品一区二区三区| 成人av在线一区二区三区| 亚洲精品中文在线观看| 日日噜噜噜夜夜爽爽狠狠| 亚洲精品电影在线观看| 久热综合在线亚洲精品| 九九视频在线播放| 亚洲男人av电影| 嫩草黄色影院| 福利网站在线观看| 乱中年女人av三区中文字幕| 欧美人伦禁忌dvd放荡欲情| 极品美乳网红视频免费在线观看| 国严精品久久久久久亚洲影视| 青柠在线影院观看日本| 黄色小视频免费| 欧美写真视频网站| 国产一区二区三区四区视频| 亚洲国产精品成人精品| 午夜影院日韩| 国产成人综合网| 影音先锋久久资源网| 香蕉网在线播放| 免费黄色在线网址| 天海翼视频在线观看| 成人欧美一区二区三区视频| japanesexxxx在线播放| 亚洲第一网站男人都懂| 手机看片福利在线| 国产精品v日韩精品v在线观看| 日本国产欧美一区二区三区| 神马午夜dy888| 一区在线视频| 中国美女黄色一级片| 韩国版免费三体| 亚洲欧洲自拍| 国产午夜精品一区二区三区嫩草| 日韩在线免费| 熟女俱乐部一区二区| 99久久婷婷国产| 无码少妇一区二区| 欧美视频一区二| 精品动漫一区| av福利在线观看| 欧美黑人狂野猛交老妇| 亚洲午夜激情av| 91福利免费观看| 欧美第一黄网免费网站| 鲁一鲁一鲁一鲁一av| 国产一区二区视频在线免费观看| 99精品国产视频| 国产超碰在线观看| 欧美国产美女| 亚洲xxxx18| 成都免费高清电影| 国产日韩欧美精品电影三级在线| 成人黄色av播放免费| 欧美精品欧美精品系列| 性生生活大片免费看视频| 亚洲.国产.中文慕字在线| 摸bbb搡bbb搡bbbb| 欧美日韩一区二区区别是什么| 成av人免费青青久| 亚洲va中文在线播放免费| 91caoporn在线| 亚洲一区二区91| 精品视频免费在线播放| 日本不卡的三区四区五区| 久久精品国产成人精品| 中文在线a在线| 91免费在线视频网站| 欧美狂猛xxxxx乱大交3| 国产精品久久久久久影视| 国产精久久久久| 日韩欧美精品网址| 黄色影院在线观看| 久久国产综合视频| 亚洲高潮女人毛茸茸| 在线a免费观看| 1314成人网| 国产911在线观看| 亚洲欧美精品在线| 精品久久久三级丝袜| 好吊妞这里只有精品| 欧美亚洲精品在线| 欧美片网站免费| 精品自拍视频在线观看| 国新精品乱码一区二区三区18| 一二三区不卡| 精品国产青草久久久久福利| 亚洲无限乱码一二三四麻| 国产高清视频在线| 美女视频a黄免费| 日本精品人妻无码77777| 国产在线视频一区二区三区| 狠狠躁少妇一区二区三区| 成年人黄色在线观看| jizz日本| 欧美高清视频一区二区三区在线观看| 日本三级2019| 亚洲人体视频| 蜜臀久久99精品久久久久久| 国产伦精品一区二区三区视频网站| 日韩精品免费观看视频| 曰本一区二区三区视频| 国产亚洲精品午夜高清影院| 美国av一区二区| 波多野结衣在线高清| 亚洲精品成人无码熟妇在线| 无码人妻精品一区二区| h1515四虎成人| 国产95亚洲| 天堂在线免费观看视频| 97国产成人无码精品久久久| 久久综合香蕉| 欧美黄色免费影院| 免费观看羞羞视频网站| 久久久久久久久综合| 成人国产视频在线观看| 清纯粉嫩极品夜夜嗨av| 久久久久久五月天久久久久久久久| 欧美a在线播放| 欧美二区三区的天堂| 日韩精品卡一| 亚洲一级高清| 伊人一区二区三区| 亚洲精品国产精品自产a区红杏吧| 欧美一区二区三区爽爽爽| 日韩一卡二卡三卡四卡| 国产av无码专区亚洲av| 国产中文字幕亚洲| 91精品国产乱码久久蜜臀| 日本在线观看大片免费视频| 日本aaa在线观看| 卡一精品卡二卡三网站乱码| av电影高清在线观看| 神马日本精品| 中文字幕久热| 亚洲精品一级二级| 亚洲欧美三级在线| 丁香激情综合国产| 欧美乱大交xxxxx潮喷l头像| 尤物网在线观看| 日韩免费一区二区| 亚洲精品视频在线观看免费| 国产精品尤物福利片在线观看| www.av精品| 国产a级毛片一区| 久久久人成影片一区二区三区| 免费a级毛片在线观看| eeuss影院www天堂免费|