首页 > 其他分享 >如何设计一个缓存策略,可以动态缓存热点数据呢?

如何设计一个缓存策略,可以动态缓存热点数据呢?

时间:2023-09-12 17:25:34浏览次数:37  
标签:200 缓存 商品 队列 数据 访问 动态 热点

如何设计一个缓存策略,可以动态缓存热点数据呢?

热点数据动态缓存的策略总体思路:通过数据最新访问时间来做排名,并过滤掉不常访问的数据,只留下经常访问的数据

以电商平台场景中的例子,现在要求只缓存用户经常访问的 Top 1000 的商品。具体细节如下:

  • 先通过缓存系统做一个排序队列(比如存放 1000 个商品),系统会根据商品的访问时间,更新队列信息,越是最近访问的商品排名越靠前;
  • 同时系统会定期过滤掉队列中排名最后的 200 个商品,然后再从数据库中随机读取出 200 个商品加入队列中;
  • 这样当请求每次到达的时候,会先从队列中获取商品 ID,如果命中,就根据 ID 再从另一个缓存数据结构中读取实际的商品信息,并返回。

在 Redis 中可以用 zadd 方法和 zrange 方法来完成排序队列和获取 200 个商品的操作。

标签:200,缓存,商品,队列,数据,访问,动态,热点
From: https://www.cnblogs.com/xiuer211/p/17697269.html

相关文章

  • 说说常见的缓存更新策略?
    说说常见的缓存更新策略?有cacheaside,read/writethrough,writeback三种cacheaside对于写操作,先更新数据库,后删除缓存,对于读操作,先访问缓存,有返回,没有查询数据库再保存到缓存中。适用于读多写少的场景,不适合写多的场景,因为写多会频繁删除缓存如果对缓存命中率有很高要求,有......
  • 图标鼠标移入移出动态效果
    效果示例这种效果起初是在腾讯云的官网上发现的,对这个效果比较好奇,所以就看了一下他的实现。然后自己写个demo记录一下。<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-sca......
  • 在fmx下动态生成的TText为什么不能调整大小及字体样式
    //为什么会这样呢?类似于下面这样的代码不能生效。MyLbl:=Ttext.Create(self);MyLbl.Parent:=VscrbMenuBtn;//MyLbl.Font.Size:=20;MyLbl.TextSettings.Font.Size:=20;MyLbl.Size.PlatformDefault:=false;......
  • [代码随想录]Day42-动态规划part10
    题目:121.买卖股票的最佳时机思路:贪心做起来更简单;dp多此一举……状态0是有买入,状态1是代码:funcmaxProfit(prices[]int)int{lens:=len(prices)iflens==0{return0}dp:=make([][]int,lens)fori:=0;i<lens;i++{......
  • Redis缓存数据和表数据一致性之延时双删策略
    一、什么是Redis延时双删?1、延迟双删策略是分布式系统中数据库存储和缓存数据保持一致性的常用策略,但它不是强一致。不管哪种方案,都无法绝对避免Redis存在脏数据的问题,只能减轻这个问题2、因为双删策略执行的结果是把redis中保存的那条数据删除了,以后的查询就都会去查询数据库......
  • C++算法之旅、06 基础篇 | 第四章 动态规划 详解
    常见问题闫式DP分析法状态表示集合满足一定条件的所有方案属性集合(所有方案)的某种属性(Max、Min、Count等)状态计算(集合划分)如何将当前集合划分成多个子集合状态计算相当于集合的划分:把当前集合划分成若干个子集,使得每个子集的状态可以先算出来,从而推导当前......
  • 过滤器:禁止浏览器缓存所有动态页面
    禁止浏览器缓存所有动态页面意味着阻止浏览器在访问网站上的动态生成内容时将这些内容存储在本地缓存中。动态页面通常是那些在每次加载时都会根据用户请求或其他因素而生成不同内容的页面,而不是静态页面,其内容在每次访问时都保持不变。禁止浏览器缓存动态页面可以确保用户在访问......
  • 自写vue导航栏--动态读取js的数据
    App.vue<template><el-containerclass="layout-container-demo"style="height:500px"><el-asidewidth="200px"><el-scrollbar><!--<el-menu:default-openeds="['1'......
  • 缓存和数据库一致性问题
    先说结论:1、想要提高应用的性能,可以引入「缓存」来解决2、引入缓存后,需要考虑缓存和数据库一致性问题,可选的方案有:「更新数据库+更新缓存」、「更新数据库+删除缓存」3、更新数据库+更新缓存方案,在「并发」场景下无法保证缓存和数据一致性,且存在「缓存资源浪费」和「机......
  • Redis 缓存击穿,缓存穿透,缓存雪崩原因+解决方案
    缓存击穿,缓存穿透,缓存雪崩的原因缓存击穿:key对应的数据存在,但在redis中过期,此时若有大量并发请求过来,这些请求发现缓存过期一般都会从后端DB加载数据并回设到缓存,这个时候大并发的请求可能会瞬间把后端DB压垮。缓存穿透:key对应的数据在数据源并不存在,每次针对此key的请求从缓存......