java吧 关注:1,232,441贴子:12,699,115
  • 24回复贴,共1

不懂就问环节,关于使用redis处理浏览量

只看楼主收藏回复

使用redis处理文章浏览量,使+1操作在redis中进行,然后定时将数据同步到mysql


IP属地:广东来自Android客户端1楼2021-12-25 13:11回复
    那么我在定时任务中,首先获取到redis中的浏览量数据,然后再清除redis中的浏览量数据,然后再更新mysql中的浏览量(旧浏览量+从redis获取到的浏览量)。


    IP属地:广东来自Android客户端2楼2021-12-25 13:13
    回复
      现在有个问题就是我获取redis数据和删除数据这两个操作是有时间间隔的,如果在这个过程中有用户点击了图片,就会导致redis中的数据+1,也就是我获取到的是100,等我删的时候变成了101,这1个浏览量就丢失了,这个问题要怎么解决呢


      IP属地:广东来自Android客户端3楼2021-12-25 13:15
      回复


        IP属地:广东来自Android客户端4楼2021-12-25 13:16
        回复
          redis本身就有个getset命令吧


          IP属地:河北来自Android客户端5楼2021-12-25 14:26
          收起回复
            1个浏览量随便丢就好了


            IP属地:广东来自Android客户端6楼2021-12-25 14:51
            收起回复
              我现在唯一能想到的就是能不能在get Redis数据的时候加一把锁,让+1的请求先不执行,先排队,等我get到再删除redis中的数据后,再把+1请求放行


              IP属地:广东来自Android客户端7楼2021-12-25 14:56
              收起回复
                你是把Redis里面的访问量和数据库中的想加吗?为什么不直接把Redis里面的值赋给数据库呢?这样就不用删缓存了


                IP属地:广东来自Android客户端8楼2021-12-25 15:32
                收起回复
                  一直redis +1操作不就行了


                  IP属地:江苏来自Android客户端9楼2021-12-25 18:53
                  回复
                    如果网站浏览量小,每一个阅读量都很重要,那就直接操作数据库,如果流量大,那么少一点浏览量也就与无所谓了,redis到数据库的同步,也可以放在深夜进行


                    IP属地:陕西来自iPhone客户端10楼2021-12-26 01:30
                    收起回复
                      不需要强一致性的没必要删缓存,技术是为了服务业务的


                      IP属地:北京13楼2021-12-27 10:56
                      回复
                        浏览量这玩意删缓存的意义是啥 并且别说丢1了 丢100也无所谓的啊


                        IP属地:湖南来自iPhone客户端14楼2021-12-29 02:27
                        回复
                          2种方案,第一种分布式锁,第二种不用删除,你操作多少到数据库你redis就相应减多少


                          IP属地:江西15楼2021-12-29 09:31
                          回复
                            不想要加锁的话可以考虑 lua脚本或者redis事务


                            IP属地:重庆16楼2021-12-29 13:29
                            回复