Redis   发布时间:2022-05-11  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Redis简单案例(三) 连续登陆活动的简单实现大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

  连续登陆活动,或许大家都不会陌生,简单理解就是用户连续登陆了多少天之后,系统就会送一些礼品给相应的用户。最常见的

莫过于游戏和商城这些。游戏就送游戏币之类的东西,商城就送一些礼券。正值国庆,应该也有不少类似的活动。

  下面就对这个的实现提供两个思路,并提供解决方案。

  思路1(以用户为维度):

  连续登陆活动,必然是要求连续登陆,不能有间隔。用1表示登陆,0表示没有登陆,这样我们可以为每个用户创建一个key去存储

他的登陆情况,就可以得到类似这样的一个二进制序列:1110111,如果是7个1,就表示连续7天,如果不是7个1就表示没有连续登

陆7天。所以就能实现这个登陆活动的要求了。

  思路2(以天数为维度):

  一天之内,用户要么是登陆过,要么是没有登陆过。同样的用1来表示登陆过,用0表示没有登陆过。假设我们连续登陆的活动是2天,

同时有3个用户,那么就要有2个key去存储这3个用户的登陆信息,这样就会得到类似这样的两个二进制序列:101(key1),111(key2)。

此时,对这两个key的每一位都进行逻辑与运算,就会得到101,就表明,用户1和用户3连续登陆了两天。从而达到活动的要求。

  之前在String的基础教程中曾经说过关于二进制的相关操作会用一个简单的案例来给大家讲解,现在是兑现这个诺言的时候了。

  下面就简单模拟一下国庆7天假期连续登陆七天的活动。

  方案1 :以用户为维度

  先为每个用户创建一个key(holiday:用户标识),对于我们的例子来说,每个key就会有7位二进制位。这时key会有这样的结构
  

Redis简单案例(三) 连续登陆活动的简单实现

  这时我们就会得到每个用户对应的二进制序列,然后就可以用bitcount命令去得到key含有的1的个数。如果等于7,就是连续登陆了

七天。这样就可以在第七天用户登陆的时间去处理了是否发送礼品了。处理的逻辑是十分简单的。控制器简单逻辑如下:

                        Random rd =               tran =dis.Gettransaction();
              ( i = ; i <>; i++                   ( j = ; j <>; j++                       activity_key = .Format(                     
                      (rd.Next(,) >                           tran.StringSetBitAsync(activity_key,i,                                        
             List> res =  List>              ( i = ; i <>; i++                   activity_key = .Format(                 
                  (_redis.bitCount(activity_key) ==                   Json( { code = ,data = res,count =         }
  在这里还是用随机数的方法来模拟数据。主要操作有两个,一个是模拟登陆后把当天对应的偏移设置为1(true),另一个是取出用户

大佬总结

以上是大佬教程为你收集整理的Redis简单案例(三) 连续登陆活动的简单实现全部内容,希望文章能够帮你解决Redis简单案例(三) 连续登陆活动的简单实现所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: