public bool AccessStatistics(string id, string classify) { var type = VideoCommonService.GetVideoType(classify) ?? ""; //日排行 _redisService.SortedSetIncrement(GetDayRankingKeyByType(type), id, 1, 60 * 24 * 15);//15天 //总排行 _redisService.SortedSetIncrement(VideoCommonService.TotalRankingKey, id, 1); return(true); }
public IActionResult VideoDetail(string id) { //详情 long vid = 0; if (!long.TryParse(id, out vid)) { return(Redirect("/error")); } var videoDetailKey = $"VideoDetail_{id}"; var videoDetail = _redisService.Get <VideoDetail>(videoDetailKey); if (videoDetail == null) { var video = _videoService.GetVideo(vid); if (video == null) { return(Redirect("/error")); } var videoSource = _videoService.GetVideoSourceByVideo(video.Id); if (videoSource == null) { return(Redirect("/error")); } videoDetail = new VideoDetail() { Video = video, VideoSource = videoSource }; var cacheTime = 60;//1小时 var type = VideoCommonService.GetVideoType(video.Classify); if (type == "电影" || type == "伦理") { cacheTime = 60 * 24 * 3;//3天 } _redisService.Set(videoDetailKey, videoDetail, cacheTime); } var videoType = VideoCommonService.GetVideoType(videoDetail.Video.Classify);; //热播 var hotListKey = "VideoHotList_" + videoType; if (!_memoryCache.TryGetValue(hotListKey, out List <VideoRank> hotList)) { hotList = new List <VideoRank>(); var dayRanking = _videoRankingService.GetDayRankingByType(videoType, 1, 10);//日榜前10 var dayRankingList = _videoService.GetVideoList(dayRanking.Select(x => Convert.ToInt64(x.Key))); dayRanking.ForEach(item => { var dayRankingItem = dayRankingList.FirstOrDefault(x => x.Id == Convert.ToInt64(item.Key)); if (dayRankingItem != null) { hotList.Add(ConvertVideoToVideoRank(dayRankingItem, item.Value)); } }); _memoryCache.Set(hotListKey, hotList, new DateTimeOffset(DateTime.Now.AddMinutes(5)));//5分钟 } ViewData["VideoDetail_HotList"] = hotList; //推荐 var recommendKey = "VideoRecommendList_" + videoType; if (!_memoryCache.TryGetValue(recommendKey, out List <VideoRank> recommendList)) { recommendList = new List <VideoRank>(); var weekRanking = _videoRankingService.GetWeekRankingByType(videoType, 1, 4);//周榜前4 var weekRankingList = _videoService.GetVideoList(weekRanking.Select(x => Convert.ToInt64(x.Key))); weekRanking.ForEach(item => { var weekRankingItem = weekRankingList.FirstOrDefault(x => x.Id == Convert.ToInt64(item.Key)); if (weekRankingItem != null) { recommendList.Add(ConvertVideoToVideoRank(weekRankingItem, item.Value)); } }); _memoryCache.Set(recommendKey, recommendList, new DateTimeOffset(DateTime.Now.AddHours(1)));//1小时 } ViewData["VideoDetail_RecommendList"] = recommendList; //统计 _videoRankingService.AccessStatistics(id, videoDetail.Video.Classify); ViewData["VideoDetail_VideoType"] = videoType; return(View(videoDetail)); }