首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用Redis统计活跃用户

统计活跃用户这个案例非常经典,也是我当时学习redis时,接触到的第一个让我眼睛一亮的使用方式 场景 用户登录后需要记录,以便以后进行登录统计 统计需求主要有: (1)今天的登录用户数 (2)...3天内都登录过的用户 (3)7天内登录过的用户 常规解决方案 如果不用redis,通常做法是在用户登录时记录日志,或者在数据库中添加一条登录记录 然后按照需求进行定时统计 redis解决方案...> bitcount key 通过bit操作就可以实现用户统计的需求了 例如今天为 2016-01-18 把 key 定义为 userlogin:20160118 (1)用户登录 ID为...100 的用户登录了,执行 > setbit userlogin:20160118 100 1 (2)统计今天登录的用户数 > bitcount userlogin:20160118 (3)统计...:20160118 (4)统计7天内登录过的用户 “登录过”表示bit值有一个为 1 即可,所以通过 or 计算获取 命令与上一个类似

1.6K60

Linux,du、df统计的硬盘使用情况不一致问题

在运维Linux服务器时,会碰到需要查看硬盘空间的情况,这时候,通常会使用df -lh命令来检查每个挂载了文件系统的硬盘的总量和已使用量,或者,可以使用du -sh [directory]命令来统计某个目录下所有文件的空间占用...在使用df、du命令时,常常会遇到统计的硬盘使用情况不一致的问题。比如du统计根目录下文件总共大小为2G,而df判断挂载在根目录的硬盘已用空间达到了3G,20G甚至更多。...block count”查看到(dev_name是设备名),这里预留的空间会被df计算到已用空间中,从而导致df和du统计不一致。...3.未统计到的文件 如果上面两种情况都排除了, 但是数据还是不一致,那是怎么回事?...这时候通过du/df统计原设备的空 间使用情况,就会发现df统计到的比du要多。遇到这样的情况时,使用fuser -km [directory]杀死占用该目录的所有进程(小心操作!)

2.3K70
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Discourse 访问统计数据的不一致

    Discourse 如果使用网站跟踪程序,例如 Google Analytics 得到的网站访问数据和真实的网站访问数据是不一致的。...这是因为 Discourse 的数据调用使用的是 API,在你的页面载入后,如果继续访问网站,那么网站使用的是 API 调用程序。 这个调用在 Google Analytics 中没有办法被跟踪到。...相对准确的记录就是 Discourse 自带的内部页面记录,这个因为能够记录每次 API 和后台的调用情况,更能够准确反映网站的使用情况。 我们说的就是在后台上使用的这个数据。...这个主要还是和 Discourse 的数据存储和调用机制有关,很难通过跟踪页面的实际载入情况来获得网站的真实页面载入数量。...可以使用其他的分析工具,例如 DNS 上面的用户 DNS 解析数量,独立用户 IP 访问数量来大致知道网站访问用户的数量。 至于具体的 API 和数据调用情况,也只能依赖内部的报表了。

    8610

    数亿的用户,如何统计独立用户访问量?

    废话不多说,今天我们来聊一聊拼多多的一道后台面试真题,是一道简单的架构类的题目:拼多多有数亿的用户,那么对于某个网页,怎么使用Redis来统计一个网站的用户访问数呢?...当一个用户访问的时候,如果用户登陆过,那么我们就使用用户的id,如果用户没有登陆过,那么我们可以在前端页面随机生成一个key用来标识用户,当用户访问的时候,我们可以使用HSET命令,key可以选择URI...当我们要统计某一个网站某一天的访问量的时候,就可以直接使用HLEN来得到最终的结果了。 ? 优点:简单,容易实现,查询也是非常方便,数据准确性非常高。 缺点:占用内存过大,。...# 使用概率算法 对于拼多多这种多个页面都可能非常多访问量的网站,如果所需要的数量不用那么准确,可以使用概率算法,事实上,我们对一个网站的UV的统计,1亿跟1亿零30万其实是差不多的。...对于拼多多这种超多用户的特别适用。 缺点:查询指定用户的时候,可能会出错,毕竟存的不是具体的数据。总数也存在一定的误差。 上面就是常见的3种适用Redis统计网站用户访问数的方法了。

    2.6K41

    快速了解JSON及JSON的使用

    文章目录 JSON简介 JSON语法 JSON 名称/值对 JSON对象 数组 JSON的简单使用 JSON简介 JSON(JavaScriptObjectNotation,JS对象简谱)是一种轻量级的数据交换格式...由于这种相似性,无需解析器,JavaScript 程序能够使用内建的 eval() 函数,用 JSON 数据来生成原生的 JavaScript 对象。...使用 \ 来转义字符 使用 {}来保存对象 使用[]来保存数组 JSON 名称/值对 key : value "name" : "ymm" JSON的值可以是: 数字 字符串 逻辑值 数组 对象...中括号 [] 保存的数组是值(value)的有序集合。一个数组以左中括号 [ 开始, 右中括号 ] 结束,值之间使用逗号 , 分隔。...的简单使用 JSON的最常见的用法,从服务器读取JSON数据,将JSON数据转换为js对象,然后在网页中使用 栗子: JS字符串(包含JSON语法) var txtJson = '{ "star_male

    1.2K30

    使用Redis的Bitmap统计一周连续登录的用户

    使用Redis的Bitmap统计一周连续登录的用户 在现代的应用程序中,对用户行为进行统计和分析是非常重要的,特别是对于用户的登录行为。...使用Redis的Bitmap数据结构可以高效地记录用户的登录情况,并且可以轻松地进行统计和分析。本文将介绍如何利用Redis的Bitmap统计一周内连续登录的用户,包括原理、实现方法和应用场景。...示例代码 下面是一个简单的Node.js示例,演示如何使用Redis的Bitmap统计一周内连续登录的用户: const redis = require('redis'); const client =...时间窗口滑动 可以使用时间窗口滑动的方式来统计不同时间段内的连续登录用户,从而更灵活地分析用户活跃情况和趋势变化。 2....实践示例 时间窗口滑动统计 下面是一个示例代码,演示如何使用时间窗口滑动统计连续登录用户: // 省略前文的初始化代码 // 时间窗口滑动统计 function slidingWindowCount(

    10110

    如何定义和统计用户的登录次数?

    如果你定义这是一次登录,那么按照登录来统计用户的活跃度就会有问题,这个用户明明活跃了七天,却只记录了一次活跃。...这里要想统计真正的活跃,就要看看,这个用户在七天内的 PV,也就是说,我们要拿到带有用户登录态的页面浏览数据,才能统计真正的活跃,只看登录次数是不行的。...从行为上看,你明明是两次打开浏览器,进入网站,但是只输入了一次用户名和密码,因为服务器的会话有效期大于两天,所以不用重新输入也能使用。那么,这种情况下,如果想记录为两次活跃,只看登录次数也是不行的。...因为会话有效期可能一直续期,也可能卡在需要续期的时间点,用户并没有操作,然后当用户想操作的时候,立马又需要重新登录。所以,登录次数的意义不大,要结合续期情况和用户的具体行为分析,才有意义。...综上所述,你说的登录次数,可能跟我说的登录次数,完全不是一回事,所以,如果要统计你说的登录次数,就要清楚地描绘出用户的具体行为,比如带有登录态的时候,每次打开我们的网站,就算一次登录,类似这种。

    4.4K30

    【Spark手机流量日志处理】使用SparkSQL按月统计流量使用量最多的用户

    它允许用户使用SQL语句或DataFrame API来查询和操作数据,同时还支持使用Spark的分布式计算引擎进行高效的并行计算。...Spark SQL还支持将SQL查询结果写入到外部数据源,如Hive表、JSON文件、Parquet文件等。...1.按月统计流量使用量最多的用户(每个月使用流量最多的用户) 2.将结果数据持久化到硬盘 处理程序 /** * @Description * @Author xiaochan * @Version...=上+下 手机号码就是用户 RDD处理方式->((月,号码),(上行+下行)) //1.下载手机流量日志 //2.按月统计流量使用量最多的用户 //3.将结果数据持久化到硬盘 object LogPhone..., use.toLong, month) }) sc.createDataFrame(value).createOrReplaceTempView("log") //每个月流量使用做多的用户

    63630

    基础拾遗--【转】Linux,du、df统计的硬盘使用情况不一致问题

    Linux,du、df统计的硬盘使用情况不一致问题 在运维Linux服务器时,会碰到需要查看硬盘空间的情况,这时候,通常会使用df -lh命令来检查每个挂载了文件系统的硬盘的总量和已使用量,或者,可以使用...在使用df、du命令时,常常会遇到统计的硬盘使用情况不一致的问题。比如du统计根目录下文件总共大小为2G,而df判断挂载在根目录的硬盘已用空间达到了3G,20G甚至更多。...block count”查看到(dev_name是设备名),这里预留的空间会被df计算到已用空间中,从而导致df和du统计不一致。...3.未统计到的文件 如果上面两种情况都排除了,但是数据还是不一致,那是怎么回事?...这 时候通过du/df统计原设备的空间使用情况,就会发现df统计到的比du要多。遇到这样的情况时,使用fuser -km [directory]杀死占用该目录的所有进程(小心操作!)

    99860

    「开发日志」Navicat统计的行数竟然和表实际行数不一致?!

    背景 近期为了保障线上数据库的稳定性,我决定针对一些大表的历史数据有计划地进行备份迁移,但是呢,发现一个奇特的现象,Navicat统计行数和表自身count统计数竟然不一致!?...但是一如既往细心的我发现,它界面的统计行数竟然和我自己count这张表行数不一致?!难道要颠覆我对Navicat的认可嘛。...我开始思考,Mysql作为一个数据库,自身肯定就有各个表的统计,而Navicat只是作为一个可视化界面,让数据肉眼可见。 Navicat:这锅我可不背。...原来,TABLE_ROWS这个字段不同存储引擎的计数规则不一致,比如MyISAM引擎这表存储TABLE_ROWS存储的就是精确的行数,而对于其他的存储引擎,比如 InnoDB,这个值只是一个近似值,与实际值相差...所以,在这种情况下,我们想要得到一个准确的计数,只能使用 SELECT COUNT(*) 来获得。 那又如何修正呢? 虽然疑惑得到了解答。但,和我一样有强迫症的朋友肯定会问,如何修正这个值呢?

    1.2K30

    redis中的bit运用统计用户在线天数

    位运算在redis中非常的方便使用,并且理由利用这个可以实现很多特殊的功能。这也迫使我去研究更多的redis提供的函数,只有研究的多,思路才能够更加开放。...使用setBit和bitCount可以实现用户活跃天数的统计,大体的思路如下: 我们网站今天第一天上线,某用户taoshihan,今天有访问那么我就记一下,网站第一天,taoshihan访问1; 网站第二天...使用代码体现为如下,具体解释可以查看视频: https://www.bilibili.com/video/av70912075/ //使用setBit和bitCount实现用户在线天数的统计 $redis...very good'); $v=$redis->get('name'); var_dump($v);//string(19) "taoshihan very good" //对字符串二进制位为1的个数进行统计..."); var_dump($v);//输出q,二进制为01110001 //使用setBit和bitCount实现用户在线天数的统计 $redis->set("taoshihan",'@');//@符号的二进制形式为

    61440

    JSON 的简介与使用

    二、JSON的语法规则 JSON的语法可以表示以下三种类型的值: 1、简单值 简单值使用与 JavaScript 相同的语法,可以在JSON中表示字符串、数值、布尔值和null。...字符串必须使用双引号表示,不能使用单引号,数值必须以十进制表示,且不能使用 NaN 和 Infinity。...(说明:JSON 不支持 JavaScript 中的特殊值 undefined ) 2、对象 对象作为一种复杂数据类型,表示的是一组有序的键值对,而每个键值对中的值可以是简单值,也可以是复杂数据类型的值...JSON 中对象的键名必须放在双引号里面,因为 JSON 不是 javascript 语句, 所以没有末尾的分号。...值 JavaScript 的 eval() 类似于 JSON.parse() 方法,可以将 json 字符串转换为 json 对象,但是 eval() 可以执行不符合 JSON 格式的代码,有可能会包含恶意代码

    66510

    利用 Redis bitmap 实现高效的用户签到统计功能

    前言 在现代应用程序中,用户签到是一个常见的功能。我们通常使用 MySQL 数据库来存储用户的签到记录。...Bitmap 的主要应用场景如下: 用户签到统计:每个用户对应一张位图,位图中的每一位代表某一天的签到情况。0 表示未签到,1 表示已签到。通过位图可以快速统计用户的连续签到天数、总签到天数等。...例如,用户访问网站或者使用应用时,将相应的位设为 1,通过统计位的数量可以快速计算活跃用户数。...功能概览 接下来将会结合 Go 语言和 Redis 中间件实现以下功能: 用户签到 查询用户签到状态 统计今年累计签到天数 统计当月的签到情况 在 Go 程序里安装 Redis 依赖 接下来的功能实现将会使用...快速查询:可以通过位操作快速查询用户的签到状态和统计签到天数。 然而,Redis Bitmap 数据类型也有其局限性。例如,使用 Bitmap 存储数据时,只能存储单一状态。

    72131

    【Redis】位图以及位图的使用场景(统计在线人数和用户在线状态)

    位图的使用场景 记录用户一年的签到情况 实时统计在线人数和某个用户的在线状态 BITCOUNT统计大数据量的性能问题 位图 位图的最大优点之一是,它们在存储信息时通常可以节省大量空间 位图不是一个真实的数据类型...:6379> BITPOS mykey 1 1 1 (integer) 9 位图的使用场景 记录用户一年的签到情况 假如有这么一个需求 记录每个用户的一年中每天的签到情况 统计某个时间段 用户的签到天数...所以只能一个个执行; 为了减少网络开销; 可以通过管道 或者写lua脚本来批量查询 统计 用户的签到总天数 BITCOUNT uidkey 0 0 BITCOUNT统计区间范围 BITCOUNT key...redis中的 incr 就可以很方便的统计; 但是如果我们还需要记录每个用户是否在线呢?...从7.73->20.92 跟我们计算的大概12MB左右; BITCOUNT统计大数据量的性能问题 在上面的例子中, 一亿位的数据量使用 BITCOUNT进行统计; BITCOUNT 复杂度是O(N)

    2.7K50
    领券