redis应用场景--记录文章,图文,或者视频的浏览次数
在阅读博客文章时,你可以看到一篇文章被阅读的次数,如果使用mysql, 那么在设计article表时,就必须设置一个view_count字段来记录这篇文章被阅读的次数。
但这种方式相比于使用redis,并不是一种好的办法,原因在于,每次更新view_count字段的值都是一个比较费力的过程。
- 首先,程序需要根据文章的id从数据库中查出view_count的值
- view_count = view_count + 1
- 更新数据库执行update操作
这3个步骤乍看起来倒是也蛮简单的,但第3步是非常容易出错的,假设网站并发量很大,同时有多个人阅读一篇文章,那么当程序执行上面这3步时就可能导致view_count没有被正确的修改,要知道我说网站并发量很大时,后台的服务就意味着是部署在多态机器上,当一个进程从数据库里查出来阅读次数是3,执行完第二步后,有另一个进程也执行更新操作,也从数据库里读出3,随后他们都进行update操作,可是最后,view_count的值是4, 而不是5。
结合redis来实现上述需求
以文章的id作为key,阅读次数为value,redis提供了incr命令,可以让value值+1,因为redis是单线程,incr操作是原子性的,绝不会出现多次+1后实际结果与预期不符的情况。