文档章节

Redis统计一个用户在一段时间内的登录次数

go2school
 go2school
发布于 2015/04/17 15:21
字数 281
阅读 2136
收藏 15
点赞 1
评论 0

我使用redis的setbit和bitcount来进行这个操作。需要注意的是setbit修改的是bit位置,而bitcount检查的是byte位置,两者相差有8的倍数。伪代码如下

//计算两个日期之间的差值
long daysBetween(Date date1,Date date2)  
{  
        Calendar cal = Calendar.getInstance();  
        cal.setTime(date1);  
        long time1 = cal.getTimeInMillis();               
        cal.setTime(date2);  
        long time2 = cal.getTimeInMillis();       
        long between_days=(time2-time1)/(1000*3600*24);  
          
       return Long.parseLong(String.valueOf(between_days));         
}  
   
//根据日期,得到一个整数位数
long dayIndex(Date date1) throws ParseException
 {
  String d0 = "2010-01-01 00:00:00";  
  Date date0 = simpledate.parse(d0);
  return daysBetween(date0, date1);//取参数日期与2010年1月1日的差值
 }



 //调用redis的setbit方法,键为用户名,位置为天数乘8,值为true
boolean setUserLoginday(Jedis redis, String user, Date currentDate)
{        
        long day_position = dayIndex(currentDate);    
        
        //乘以8的原因是这个操作修改的是bit位置
        //然而bitcount修改操作的是byte位置
        return redis.setbit(user, day_position * 8, true);  
}




//调用redis的bitcount方法计算,键为用户名,在两个日期之间登录的天数
long countUserLoginDays(Jedis redis, String user, Date fromdate, Date todate) throws ParseException {           
  long from_day_position = DataTransformer.dayIndex(fromdate);
  long to_day_position = DataTransformer.dayIndex(todate);
    return redis.bitcount(key, from_day_position, to_day_position);            
    }

© 著作权归作者所有

共有 人打赏支持
go2school
粉丝 10
博文 33
码字总数 14674
作品 0
技术主管
浅谈REDIS数据库的键值设计

丰富的数据结构使得redis的设计非常的有趣。不像关系型数据库那样,DEV和DBA需要深度沟通,review每行sql语句,也不像memcached那样,不需要DBA的参与。redis的DBA需要熟悉数据结构,并能了解...

Jean ⋅ 2014/04/09 ⋅ 0

浅谈 Redis 数据库的键值设计

丰富的数据结构使得redis的设计非常的有趣。不像关系型数据库那样,DEV和DBA需要深度沟通,review每行sql语句,也不像memcached那样,不需要DBA的参与。redis的DBA需要熟悉数据结构,并能了解...

红薯 ⋅ 2011/09/12 ⋅ 12

云锁多机版云中心使用测评

安全是建设网站的是否合格的重要指标,它虽然没有网站权重、外链等那么明显,但是一个不安全的网站,就算它的排名再好权重再高也不能算一个合格的网站,可以想象当你是这网站的管理者,当网站...

卢松松 ⋅ 2015/12/04 ⋅ 0

数据统计工具与常用的核心数据指标

数据统计工具:百度统计 百度统计思维导图 百度统计是一个强大的网站数据统计和分析工具,从六大维度进行分析——趋势分析、来源分析、页面分析、访客分析、定制分析、优化分析,帮助网站优化...

d1j4robv ⋅ 2015/06/29 ⋅ 0

怎么在登录表中查询一段时间内登录超过三次的玩家ID,一天内登录次数大于1只算登录1次, 表中的列有登录ID,登录时间。

怎么在登录表中查询一段时间内登录超过三次的玩家ID,一天内登录次数大于1只算登录1次,表中的列有登录ID,登录时间。

回忆灬焱 ⋅ 2015/11/26 ⋅ 2

bloom filter与dawgdic(一种trie树)

我有一个做了一款移动浏览器的朋友。 他有这样一个需求:当用户输入一个网站的url时候,移动浏览器需要识别这个网址是否是一个恶意网址。另外,他有一个恶意网址库。 也许这样的解决方法有多...

alexstocks ⋅ 2014/09/04 ⋅ 0

redis 用setbit(bitmap)统计活跃用户

getspool.com的重要统计数据是实时计算的。Redis的bitmap让我们可以实时的进行类似的统计,并且极其节省空间。在模拟1亿2千8百万用户的模拟环境下,在一台MacBookPro上,典型的统计如“日用户...

浮云飘飘 ⋅ 2015/12/15 ⋅ 2

利用Redis BitMap 统计用户活跃指标

bitMap原理 : 如下: index 从 0 到 9 ,依次对应到一个bit位上,如果index 代表用户id,bit位上的0 1分表 代表用户是否登录; 1 0 1 1 0 1 1 0 1 1 0 1 2 3 4 5 6 7 8 9 redis数据结构中 st...

robin-yao ⋅ 2015/04/11 ⋅ 2

统计网站在线人数

如何统计网站的在线人数呢? 首先很简单的思想就是,如果只针对会员用户进行统计,在登录登出时加判断,然后维护一个表(或者其他存储方式)来存储在线会员即可。 但是有个问题就是,对于正常...

Hosee ⋅ 2016/05/28 ⋅ 0

如何设计一款APP的登录模块

  登录,是用户深入了解一个产品的敲门砖。简洁的登录模式,让用户能拥有一个非常良好的体验。因此,在设计登录模块时,要尽量简化流程,减少用户输入,提升整个环节的流畅度。 一、登录模...

Stefen123 ⋅ 2017/12/09 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Day 17 vim简介与一般模式介绍

vim简介 vi和Vim的最大区别就是编辑一个文件时vi不会显示颜色,而Vim会显示颜色。显示颜色更便于用户编辑,凄然功能没有太大的区别 使用 yum install -y vim-enhanced 安装 vim的三种常用模式...

杉下 ⋅ 56分钟前 ⋅ 0

【每天一个JQuery特效】根据可见状态确定是否显示或隐藏元素(3)

效果图示: 主要代码: <!DOCTYPE html><html><head><meta charset="UTF-8"><title>根据可见状态确定 是否显示或隐藏元素</title><script src="js/jquery-3.3.1.min.js" ty......

Rhymo-Wu ⋅ 今天 ⋅ 0

OSChina 周四乱弹 —— 初中我身体就已经垮了,不知道为什么

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @加油东溪少年 :下完这场雨 后弦 《下完这场雨》- 后弦 手机党少年们想听歌,请使劲儿戳(这里) @马丁的代码 :买了日本 日本果然赢了 翻了...

小小编辑 ⋅ 今天 ⋅ 12

浅谈springboot Web模式下的线程安全问题

我们在@RestController下,一般都是@AutoWired一些Service,由于这些Service都是单例,所以并不存在线程安全问题。 由于Controller本身是单例模式 (非线程安全的), 这意味着每个request过来,...

算法之名 ⋅ 今天 ⋅ 0

知乎Java数据结构

作者:匿名用户 链接:https://www.zhihu.com/question/35947829/answer/66113038 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 感觉知乎上嘲讽题主简...

颖伙虫 ⋅ 今天 ⋅ 0

Confluence 6 恢复一个站点有关使用站点导出为备份的说明

推荐使用生产备份策略。我们推荐你针对你的生产环境中使用的 Confluence 参考 Production Backup Strategy 页面中的内容进行备份和恢复(这个需要你备份你的数据库和 home 目录)。XML 导出备...

honeymose ⋅ 今天 ⋅ 0

JavaScript零基础入门——(九)JavaScript的函数

JavaScript零基础入门——(九)JavaScript的函数 欢迎回到我们的JavaScript零基础入门,上一节课我们了解了有关JS中数组的相关知识点,不知道大家有没有自己去敲一敲,消化一下?这一节课,...

JandenMa ⋅ 今天 ⋅ 0

火狐浏览器各版本下载及插件httprequest

各版本下载地址:http://ftp.mozilla.org/pub/mozilla.org//firefox/releases/ httprequest插件截至57版本可用

xiaoge2016 ⋅ 今天 ⋅ 0

Docker系列教程28-实战:使用Docker Compose运行ELK

原文:http://www.itmuch.com/docker/28-docker-compose-in-action-elk/,转载请说明出处。 ElasticSearch【存储】 Logtash【日志聚合器】 Kibana【界面】 答案: version: '2'services: ...

周立_ITMuch ⋅ 今天 ⋅ 0

使用快嘉sdkg极速搭建接口模拟系统

在具体项目研发过程中,一旦前后端双方约定好接口,前端和app同事就会希望后台同事可以尽快提供可供对接的接口方便调试,而对后台同事来说定好接口还仅是个开始、设计流程,实现业务逻辑,编...

fastjrun ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部