首页 > 数据库 >redis应用场景--记录文章,图文,或者视频的浏览次数

redis应用场景--记录文章,图文,或者视频的浏览次数

时间:2023-06-08 15:00:32浏览次数:40  
标签:count -- 数据库 redis 次数 文章 图文 view

在阅读博客文章时,你可以看到一篇文章被阅读的次数,如果使用mysql, 那么在设计article表时,就必须设置一个view_count字段来记录这篇文章被阅读的次数。

但这种方式相比于使用redis,并不是一种好的办法,原因在于,每次更新view_count字段的值都是一个比较费力的过程。

  1. 首先,程序需要根据文章的id从数据库中查出view_count的值
  2. view_count = view_count + 1
  3. 更新数据库执行update操作

  这3个步骤乍看起来倒是也蛮简单的,但第3步是非常容易出错的,假设网站并发量很大,同时有多个人阅读一篇文章,那么当程序执行上面这3步时就可能导致view_count没有被正确的修改,要知道我说网站并发量很大时,后台的服务就意味着是部署在多态机器上,当一个进程从数据库里查出来阅读次数是3,执行完第二步后,有另一个进程也执行更新操作,也从数据库里读出3,随后他们都进行update操作,可是最后,view_count的值是4, 而不是5。

结合redis来实现上述需求

以文章的id作为key,阅读次数为value,redis提供了incr命令,可以让value值+1,因为redis是单线程,incr操作是原子性的,绝不会出现多次+1后实际结果与预期不符的情况。

 

标签:count,--,数据库,redis,次数,文章,图文,view
From: https://www.cnblogs.com/99kol/p/17466497.html

相关文章

  • 外观模式:隐藏了复杂系统的复杂性,并提供一个简单的接口来访问系统
    外观模式是一种结构型设计模式,它为复杂子系统提供了一个统一的接口,从而使其更易于使用。外观模式隐藏了子系统的复杂性,并将其封装在一个高级接口中。在使用外观模式时,客户端只需要与外观对象进行交互,而不需要直接与子系统中的各个组件交互。//子系统中的组件classCPU{pu......
  • redis应用场景--实现布隆过滤器
    简述布隆过滤器的实现思路:假设有一个长度为n的比特数组,bit_array,数组里的每一位都是0,对于一个url或者是其他数据,使用hash算法计算出url的散列值,这个散列值当然是一个整数,暂且命名为index,index=index%n,确保index的值小于n,查看bit_array[index]是否等于1,如果等于1,表示该url已......
  • org.springframework.data.redis.RedisSystemException: Redis exception; nested exc
    springBoot+redis.程序隔一段时间会莫名其妙的报Redis的错误.报错如下:org.springframework.data.redis.RedisSystemException:Redisexception;nestedexceptionisio.lettuce.core.RedisException:java.io.IOException:Connectionresetbypeer百度得知说:是因为re......
  • 如何通过API接口获取淘宝的商品评论
    在淘宝网上购买产品时,人们通常会查看其他客户留下的评价和评论。这些评价和评论对于购买决策非常有帮助,因为它们提供了其他客户的观点和建议。通过使用淘宝API接口,可以轻松地获取淘宝上任何商品的评论。以下是如何获取淘宝商品评论的步骤:注册账号并创建应用在申请获取淘宝商......
  • vue文档下载
    文档中{普通文字}{%图片}{%%居中图片}<template><el-date-pickerv-model="value"class="timePicker"type="day"placeholder=""format="YYYY-MM-DD"......
  • 2022 中国开源创新大赛,时序数据库 TDengine 榜上有名
    近日,2022中国互联网发展创新与投资大赛暨2022年中国开源创新大赛在北京落下帷幕,本次大赛由中央网信办信息化发展局指导,中国互联网发展基金会、中国网络空间研究院、中国互联网投资基金联合主办。非常荣幸的是,凭借着强大的开源创新能力和产品竞争力,时序数据库(TimeSeriesDatab......
  • [Multimedia][ChatGPT] 如何使用 ffmpeg 将一个包含绿幕的前景视频叠加到背景视频上,并
    要使用ffmpeg将包含绿幕的前景视频叠加到背景视频上,并将前景视频中的绿幕设置为透明色,您需要以下步骤:安装ffmpeg。首先确保您已安装了最新版本的ffmpeg。如果还没有安装,请访问官方网站下载并安装相应版本。使用chromakey过滤器将绿幕替换为透明色。chromakey过滤器可以识......
  • 矩形图的奇妙世界:揭开数据背后的故事
    在当今信息爆炸的时代,数据已经成为决策和洞察的重要基石,但海量的数据如果不经过整理和呈现,往往难以得出有意义的结论。这时候,可视化工具的作用就变得尤为重要了。在众多可视化形式中,矩形图以其简洁直观的特点受到了广泛的关注和应用。 矩形图是一种基于矩形形状的图表,通过矩形......
  • [汽车]车架号(VIN)的设计与规范
    1车架号概述VIN是英文VehicleIdentificationNumber(车辆识别代码)的缩写,也就是我们平时所说的车架号、大架号。总共由17位字符组成,是汽车唯一的身份识别信息,好比于汽车的“身份证号码”。VIN码的历史沿革在1954年,首次开始使用在1954年~1981年,由于对这些编码没有公认的标......
  • 跟着源码学IM(十一):一套基于Netty的分布式高可用IM详细设计与实现(有源码)
    本文由will分享,个人博客zhangyaoo.github.io,原题“基于Netty的IM系统设计与实现”,有修订和重新排版。1、引言本文将要分享的是如何从零实现一套基于Netty框架的分布式高可用IM系统,它将支持长连接网关管理、单聊、群聊、聊天记录查询、离线消息存储、消息推送、心跳、分布式唯......