日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Redis(案例二:高并发商品首页热点数据开发实战)

發布時間:2023/12/3 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis(案例二:高并发商品首页热点数据开发实战) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

熱點數據

經常會被查詢,但是不經常被修改或者刪除的數據
??-詳情?

鏈路邏輯

檢查緩存是否有
緩存不存在則查詢數據庫
查詢結果放到緩存,設置過期時間
下次訪問則命中緩存

代碼實現

pojo —熱點視頻

@Data @NoArgsConstructor @AllArgsConstructor public class VideoDO {private int id;private String title;private String img;private int price;

pojo —熱點卡片

@Data import java.util.List;public class VideoCardDO {private String title;private int id;private int weight;List<VideoDO> list;

dao —模擬數據

import net.xdclass.xdclassredis.model.VideoCardDO; import net.xdclass.xdclassredis.model.VideoDO; import org.springframework.stereotype.Repository;import java.util.ArrayList; import java.util.List; import java.util.concurrent.TimeUnit;@Repository public class VideoCardDao {public List<VideoCardDO> list(){try {TimeUnit.MILLISECONDS.sleep(200);} catch (InterruptedException e) {e.printStackTrace();}List<VideoCardDO> cardDOList = new ArrayList<>();VideoCardDO videoCardDO = new VideoCardDO();videoCardDO.setId(1);videoCardDO.setTitle("熱門視頻");VideoDO videoDO1 = new VideoDO(1,"springcloud微服務視頻","xdclass.net",43);VideoDO videoDO2 = new VideoDO(2,"Paas工業級項目實戰","xdclass.net",32);VideoDO videoDO3 = new VideoDO(3,"面試專題視頻","xdclass.net",43);VideoDO videoDO4 = new VideoDO(4,"spring源碼實戰","xdclass.net",4);List<VideoDO> videoDOS = new ArrayList<>();videoDOS.add(videoDO1);videoDOS.add(videoDO2);videoDOS.add(videoDO3);videoDOS.add(videoDO4);videoCardDO.setList(videoDOS);VideoCardDO videoCardDO2 = new VideoCardDO();videoCardDO2.setId(2);videoCardDO2.setTitle("項目實戰視頻");VideoDO videoDO5 = new VideoDO(1,"springcloud微服務視頻項目","xdclass.net",43);VideoDO videoDO6 = new VideoDO(2,"Paas工業級項目實戰項目","xdclass.net",32);VideoDO videoDO7 = new VideoDO(3,"面試專題視頻項目","xdclass.net",43);VideoDO videoDO8 = new VideoDO(4,"設計模式視頻","xdclass.net",4);List<VideoDO> videoDOS2 = new ArrayList<>();videoDOS2.add(videoDO5);videoDOS2.add(videoDO6);videoDOS2.add(videoDO7);videoDOS2.add(videoDO8);videoCardDO2.setList(videoDOS2);cardDOList.add(videoCardDO);cardDOList.add(videoCardDO2);return cardDOList;}}

service

import net.xdclass.xdclassredis.model.VideoCardDO; import java.util.List;public interface VideoCardService {List<VideoCardDO> list(); }

serviceImpl

import net.xdclass.xdclassredis.dao.VideoCardDao; import net.xdclass.xdclassredis.model.VideoCardDO; import net.xdclass.xdclassredis.service.VideoCardService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;import java.util.List;@Service public class VideoCardServiceImpl implements VideoCardService {@Autowiredprivate VideoCardDao videoCardDao;@Overridepublic List<VideoCardDO> list() {return videoCardDao.list();} }

controller

import net.xdclass.xdclassredis.model.VideoCardDO; import net.xdclass.xdclassredis.service.VideoCardService; import net.xdclass.xdclassredis.util.JsonData; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;import java.util.List; import java.util.concurrent.TimeUnit;@RequestMapping("/api/v1/card") @RestController public class VideoCardController {@Autowiredprivate VideoCardService videoCardService;@Autowiredprivate RedisTemplate redisTemplate;/*** 緩存key*/private static final String VIDEO_CARD_CACHE_KEY = "video:card:key";/*** 有緩存* @return*/@GetMapping("list_cache")public JsonData listCardCache(){Object cacheObj = redisTemplate.opsForValue().get(VIDEO_CARD_CACHE_KEY);if(cacheObj != null){List<VideoCardDO> list = (List<VideoCardDO>) cacheObj;return JsonData.buildSuccess(list);} else {List<VideoCardDO> list = videoCardService.list();redisTemplate.opsForValue().set(VIDEO_CARD_CACHE_KEY,list,10,TimeUnit.MINUTES);return JsonData.buildSuccess(list);}}/*** 無緩存* @return*/@GetMapping("list_nocache")public JsonData listCardNoCache(){List<VideoCardDO> list = videoCardService.list();return JsonData.buildSuccess(list);}}

總結

以上是生活随笔為你收集整理的Redis(案例二:高并发商品首页热点数据开发实战)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。