运维经验四:大流量如何保存文章阅读数

网站文章通常都会有个阅读数,最简单的方法就是每访问一次就加一,这看起来很简单,update一下就可以了。如果网站访问量很大呢,每天有几十万 次的访问呢,一秒钟就要update几次服务器,效率就很低了。而且,数据库update的时候会锁表,还会影响到读操作,看来只能用缓存了。

Memcached是会丢失数据的,不合适;Redis是内存型数据库,可以持久化,就用它了。Redis运行的时候,是把数据都保存在内存中的, 读写速度非常的快,而且可以设置持久化策略,一般几分钟保存一次到硬盘就可以了,即使数据丢失,也只是几分钟的阅读数而已,这种损失是可以接受的。还可以 使用crontab做个任务,定时把阅读数同步到数据库,其它类似的计数也可以使用这种方式保存。Redis的读写速度是非常快的,所以不用担心在显示列 表的时候一个个去读取阅读数的性能问题。

如果要像QQ空间那样,保存哪些用户访问过该篇文章呢,这也很简单,Redis有种数据类型叫集合(Sets),每次登录用户访问时,就把用户ID 添加到该文件的集合里就可以了,集合能自动去重,很方便。如果还需要根据访问时间排序呢,比如最新访问的用户排在前面,用有序集合(Sorted Sets)就可以了,把当前时间作为有序集合的分数。

猜你喜欢

转载自a453228609.iteye.com/blog/2162804