日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

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

瀏覽:28日期:2023-04-23 08:25:58

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

前言

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

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

最近做了一個帖子的收藏、點贊數(shù)量的功能,其實之前也做過類似的功能,因為之前一直使用的mysql 總是感覺對于這種頻繁需要改變的值,不應該給予Mysql過大的壓力,本文章采用的是redis 做了持久化。下面貼出關(guān)鍵代碼:DataResponse是項目中使用的結(jié)果封裝實體類;forumDTO是此功能的參數(shù)實體,如果有需要請留言。

常量如下:

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 設置為 key String key = forumDTO.getPostId().toString(); //get 用戶id String userId = forumDTO.getUserId(); String count, newCount; //綁定數(shù)據(jù)集key BoundHashOperations<String, Object, Object> post = redisTemplate.boundHashOps('post:'); //獲取hKey // count: 0論壇-點贊量 1評論量 2收藏量 3瀏覽 4評論-點贊量 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 帖子點贊 3 收藏 4評論-點贊 String prefix; switch (forumDTO.getOperationType()) { case 1://記錄瀏覽次數(shù) OPERATIONTYPE 1 : 記錄瀏覽次數(shù)newCount = resetValue(count, BYTE_THREE, true);post.put(key, newCount);break; case 2://記錄帖子-點贊prefix = 'thumbs:post';switch (forumDTO.getClickType()) { case 0: /** * OPERATIONTYPE 2: + CLICKTYPE 0 = 給帖子點贊 * 0點贊 * 從redis中獲取數(shù)量 帖子d 例如:177488r88t78r78r7 * count: 0論壇-點贊量 1評論量 2收藏量 3瀏覽 4評論-點贊量 * 避免每種數(shù)量都去查詢redis 直接通過 redis value 記錄所有的數(shù)量 * 獲取加 +1 后的值 */ if (redisTemplate.opsForSet().isMember(prefix + ':' + key, prefix + ':' + userId)) { return DataResponse.fail('不能重復點贊哦'); } 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 = 取消帖子點贊 //1取消帖子點贊 if (!redisTemplate.opsForSet().isMember(prefix + ':' + key, prefix + ':' + userId)) { //重復處理 return DataResponse.fail('不能重復取消哦'); } 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';List<MqMessage> sendList = new LinkedList<>();MqMessage mqMessage = new MqMessage();switch (forumDTO.getClickType()) { //OPERATIONTYPE 3 + CLICKTYPE 0 = 記錄收藏 case 0: //數(shù)量+1 //根據(jù)用戶id + 帖子id 查詢redis 數(shù)據(jù) if (redisTemplate.opsForSet().isMember(prefix + ':' + key, prefix + ':' + userId)) { //重復處理 return DataResponse.fail('不能重復收藏哦'); } //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取出當前用戶是否已經(jīng)收藏 if (!redisTemplate.opsForSet().isMember(prefix + ':' + key, prefix + ':' + userId)) { //重復處理 return DataResponse.fail('不能重復取消哦'); } //刪除 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://記錄評論-點贊// OPERATIONTYPE 4: + CLICKTYPE 0 = 給評論點贊if (null == forumDTO.getCommentId()) { return DataResponse.fail('評論id不能為空');}String commentNum, ckey = forumDTO.getCommentId().toString();BoundHashOperations<String, 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();}//贊評論prefix = 'thumbs:comment';switch (forumDTO.getClickType()) { case 0: /** * 0點贊 * 從redis中獲取數(shù)量 帖子d 例如:177488r88t78r78r7 * count: 0論壇-點贊量 1評論量 2收藏量 3瀏覽 4評論-點贊量 * 避免每種數(shù)量都去查詢redis 直接通過 redis value 記錄所有的數(shù)量 * 獲取加 + 后的值 */ if (redisTemplate.opsForSet().isMember(prefix + ':' + ckey, prefix + ':' + userId)) { return DataResponse.fail('不能重復點贊哦'); } else { redisTemplate.opsForSet().add(prefix + ':' + ckey, prefix + ':' + userId); } //set to redis comment.put(ckey, cResetValue(commentNum, true)); break; case 1: //1取消評論點贊 if (!redisTemplate.opsForSet().isMember(prefix + ':' + ckey, prefix + ':' + userId)) { //重復處理 return DataResponse.fail('不能重復取消哦'); } 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> * 〈點贊數(shù)、收藏數(shù)等數(shù)量重置〉 * @param val 數(shù)組 * @param type 0帖子點贊量 1評論量 2收藏量 3瀏覽 4評論點贊量 * @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的包需要驗證正則,效率較低。 */ 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 實現(xiàn)點贊、瀏覽、收藏、評論等數(shù)量的增減操作的文章就介紹到這了,更多相關(guān)springboot +redis實現(xiàn)點贊收藏評論內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標簽: Spring
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久中文字幕导航| 国产精品一区二区av日韩在线| 91精品尤物| 国产欧美三级| 国产成人精品三级高清久久91| 久久久久久亚洲精品美女| 美女av一区| 日韩在线视频精品| 麻豆mv在线观看| 欧美69视频| 一区二区三区网站| 国产福利资源一区| 三级小说欧洲区亚洲区| 伊人久久亚洲影院| 1000部精品久久久久久久久| 水蜜桃久久夜色精品一区的特点| 日韩高清三区| 91视频久久| 伊人久久成人| 免费日韩成人| 在线日韩中文| 日韩精品社区| 日本精品影院| 综合亚洲自拍| 成人精品亚洲| 日韩va亚洲va欧美va久久| 久久av综合| 美女少妇全过程你懂的久久| 亚洲精品乱码日韩| 国产精品尤物| 欧美日韩国产欧| 国产精品久久久久久久久久白浆 | 日本va欧美va欧美va精品| 国产欧美午夜| 激情国产在线| 只有精品亚洲| 成人国产精选| 免费观看日韩电影| 成人在线视频中文字幕| 蜜桃视频免费观看一区| 成人国产精品一区二区免费麻豆| 免费成人在线影院| 国产福利片在线观看| 亚洲一级大片| av一区在线| 日韩精品社区| 亚洲免费精品| 91看片一区| 国产黄色一区| 国产精品呻吟| 91tv亚洲精品香蕉国产一区| 国产欧美亚洲精品a| 黄色成人91| 久草免费在线视频| 国产欧美精品久久| 亚洲精品一级| 欧美在线亚洲综合一区| av综合电影网站| 国产精品日本一区二区三区在线| 香蕉视频成人在线观看| 精品日韩视频| 国产精品国产一区| 欧美激情精品| 91精品视频一区二区| 亚洲二区精品| 特黄毛片在线观看| 麻豆精品一区二区综合av| 日韩不卡在线观看日韩不卡视频| 一区视频在线| 美女久久久久| 久久高清免费| 日韩欧美一区二区三区在线观看| 久草精品视频| 欧美日韩一视频区二区| 亚洲乱亚洲高清| 成人久久久久| 国产麻豆久久| 不卡福利视频| 国产一区调教| 日韩在线黄色| 蜜臀久久99精品久久久画质超高清| 欧洲一级精品| 日韩三区在线| 精品国产亚洲一区二区三区大结局| 青青草伊人久久| 日本视频一区二区| 爽好久久久欧美精品| 欧美sss在线视频| bbw在线视频| 日韩av二区| 成人台湾亚洲精品一区二区| 精品视频一区二区三区四区五区| 麻豆精品新av中文字幕| 精品日韩一区| 免费日韩一区二区三区| 欧美国产精品| 在线天堂资源www在线污| 日韩激情一区| 999视频精品| 亚洲免费一区二区| 蜜桃视频一区二区三区在线观看| 综合欧美精品| 国产一级成人av| 精品久久美女| 久久精品国产68国产精品亚洲| 亚洲精品.com| 亚洲少妇一区| 蜜桃视频一区二区三区| 日韩福利视频一区| 91p九色成人| 久久69成人| 在线一区视频观看| 丝袜美腿亚洲一区二区图片| 日韩精品免费一区二区夜夜嗨| 国产乱子精品一区二区在线观看 | 爽好多水快深点欧美视频| 在线亚洲欧美| 日本不卡中文字幕| 国产精品日韩精品中文字幕| 美日韩一区二区三区| 久久精品欧洲| 欧美交a欧美精品喷水| 日本久久黄色| 日韩精品dvd| 天堂成人国产精品一区| 奇米亚洲欧美| 国产区精品区| 欧美羞羞视频| 国产精品腿扒开做爽爽爽挤奶网站| 宅男在线一区| 日韩综合小视频| 国产精品蜜芽在线观看| 久久精品1区| 视频一区二区三区在线| 久久国内精品视频| 91看片一区| 欧美国产91| 日韩欧美三区| 欧美sm一区| 免费人成黄页网站在线一区二区 | 欧产日产国产精品视频| 影音先锋久久| 国产欧美大片| 欧美成人精品| 里番精品3d一二三区| 在线午夜精品| 欧美日韩亚洲一区二区三区在线| 蜜桃av.网站在线观看| 日韩在线播放一区二区| 首页国产欧美日韩丝袜| 欧美激情日韩| 亚洲va在线| 国产亚洲精品精品国产亚洲综合| 日韩国产综合| 国产精品一国产精品k频道56| 亚洲午夜黄色| 久久亚洲黄色| 中文字幕乱码亚洲无线精品一区| аⅴ资源天堂资源库在线| 日韩在线观看中文字幕| 99精品一区| 久久三级毛片| 日本午夜精品久久久久| 欧美日韩国产高清电影| 日本在线不卡视频| 五月精品视频| а√天堂中文在线资源8| 国产麻豆一区| 亚洲麻豆一区| 亚洲成人日韩| 九九精品调教| 成人在线观看免费视频| 国产亚洲一区| 亚洲精品大片| 亚洲男女自偷自拍| 久久黄色影院| 桃色av一区二区| 久久精品国产久精国产| 日本综合精品一区| 久久久国产亚洲精品| 美女视频网站久久| 日韩av资源网| 亚洲bt欧美bt精品777| 九九综合在线| 欧美日韩一二三四| 日韩一区二区中文| 国产传媒在线| 精品视频一区二区三区在线观看 | 国产传媒在线| 久久国产人妖系列| 中文字幕中文字幕精品| 国产麻豆综合| 99综合视频| 国产精品tv| 国产精品7m凸凹视频分类| 国产一区亚洲| 欧美精选视频一区二区| 成人黄色av| 91综合网人人| 精品视频网站|