网站文章通常都会有个阅读数,最简单的方法就是每访问一次就加一,这看起来很简单,update一下就可以了。如果网站访问量很大呢,每天有几十万 次的访问呢,一秒钟就要update几次服务器,效率就很低了。而且,数据库update的时候会锁表,还会影响到读操作,看来只能用缓存了。
Memcached是会丢失数据的,不合适;Redis是内存型数据库,可以持久化,就用它了。Redis运行的时候,是把数据都保存在内存中的, 读写速度非常的快,而且可以设置持久化策略,一般几分钟保存一次到硬盘就可以了,即使数据丢失,也只是几分钟的阅读数而已,这种损失是可以接受的。还可以 使用crontab做个任务,定时把阅读数同步到数据库,其它类似的计数也可以使用这种方式保存。Redis的读写速度是非常快的,所以不用担心在显示列 表的时候一个个去读取阅读数的性能问题。
如果要像QQ空间那样,保存哪些用户访问过该篇文章呢,这也很简单,Redis有种数据类型叫集合(Sets),每次登录用户访问时,就把用户ID 添加到该文件的集合里就可以了,集合能自动去重,很方便。如果还需要根据访问时间排序呢,比如最新访问的用户排在前面,用有序集合(Sorted Sets)就可以了,把当前时间作为有序集合的分数。
本文出自:http://www.geek521.com, 原文地址:http://www.geek521.com/?p=6845, 感谢原作者分享。
相关推荐
大运维之旅(二):大运维服务解析.docx大运维之旅(二):大运维服务解析.docx大运维之旅(二):大运维服务解析.docx大运维之旅(二):大运维服务解析.docx大运维之旅(二):大运维服务解析.docx大运维之旅(二):大运维...
linux运维学习笔记:数据库介绍与安装管理
linux运维学习笔记:MySQL数据库事务和引擎知识
linux运维学习笔记:MySQL多实例配置实战
linux运维学习笔记:企业Shell面试题总结-1
云计算平台的运维与开发教案:Docker容器.docx云计算平台的运维与开发教案:Docker容器.docx云计算平台的运维与开发教案:Docker容器.docx云计算平台的运维与开发教案:Docker容器.docx云计算平台的运维与开发教案:...
linux运维学习笔记:MySQL运维基础面试问答题42题
linux运维学习笔记:Shell前言
linux运维学习笔记:Shell函数
linux运维学习笔记:Shell变量
linux运维学习笔记:Mysql日志
linux运维学习笔记:Shell条件语句
linux运维学习笔记:Shell脚本调试
linux运维学习笔记:Shell脚本书写规范
linux运维学习笔记:Mysql备份与恢复
linux运维学习笔记:Shell生成随机数的方法
linux运维学习笔记:Shell变量的数值运算
Linux运维实战:CentOS76操作系统从入门到精通.docx
linux运维学习笔记:MySQL主从复制原理和实战
智能化卫星互联网运维与管理:现状与机遇.pdf