阅读 229

redis分布式缓存(六)一一 文章的阅读量PV解决方案(String)

文章的阅读量实现原理

  1. 对一并发量不大的网站,我们可能把点赞数据持久化到数据库,但是并发量上来了,我们不可能采用数据库来做计数器.

  2. 对于一线互联网公司,如此大的并发量,通常都是用redis中间件实现的。

  3. redis中使用incr命令来实现。

  4. incr命令,它的全称是increment,用途就是计数器。每执行一次incr命令,都将key的value自动加1。如果key不存在,那么key的值初始化为0,然后再执行INCR操作。

例如:微信文章id=100,做阅读计算如:

127.0.0.1:6379> incr article:100 (integer) 1 127.0.0.1:6379> incr article:100 (integer) 2 127.0.0.1:6379> incr article:100 (integer) 3 127.0.0.1:6379> incr article:100 (integer) 4 127.0.0.1:6379> get article:100 "4" 复制代码

编码实现文章的阅读量

@RestController @Slf4j public class ViewController {     @Autowired     private StringRedisTemplate stringRedisTemplate;     @GetMapping(value = "/isView")     public void isView(Integer id) {         //redis key         String key="article:"+id;         //调用redis的increment计数器命令         long n=this.stringRedisTemplate.opsForValue().increment(key);         log.info("key={},阅读量为{}",key, n);     } } 复制代码

思考

  1. 需要频繁的修改redis,耗费CPU,高并发修改redis会导致 redis 的CPU和网络资源耗尽,如何优化

  • 例如一篇文章500阅读量,有1000篇文章,那么需要请求redis服务500*1000=500000次,如果是高并发的商品等页面请求,需要网络连接redis次数会更加多。

  • 采用双缓存模式减少redis请求。

  1. redis数据如何同步到数据库

  • 采用定时任务读取redis数据持久化到数据库


作者:小伙子vae
链接:https://juejin.cn/post/7025861865678831647


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐