当前位置:网站首页>使用Redis做某个时间段在线数统计
使用Redis做某个时间段在线数统计
2022-08-04 17:10:00 【Mar丶流年】
前言
一般有范围性的需求都可以使用 sorted set 实现。
sorted set 类型通常用于实现(排行榜,最新的xxx,延迟队列…)
实现
实现很简单,将用户的登录时间转换成时间戳作为权重即可。
假设用户1,3 在20220801号登录
zadd login 1659283200 1
zadd login 1659283200 3
假设用户2,3 在20220802号登录
zadd login 1659369600 2
zadd login 1659369600 3
假设用户4,在20220803号登录
zadd login 1659456000 4
统计20220801至20220802的在线用户数量
# ZCOUNT key min max
# 在线 3
zcount login 1659283200 1659369600
拓展:在上面的基础上统计连续两天都在线的用户及其最后登录时间
假设用户1,3 在20220801号登录
zadd login:20220801 1659283200 1
zadd login:20220801 1659283200 3
假设用户2,3 在20220802号登录
zadd login:20220802 1659369600 2
zadd login:20220802 1659369600 3
假设用户4,在20220803号登录
zadd login:20220803 1659456000 4
统计20220801,20220802 两天都登录的用户及其最后登录时间
# 将两个交集保存至 result:20220801:20220802
# aggregate max 保留最大的权重(即最后登录时间)
# 不使用 aggregate max,权重会累加
zinterstore result:20220801:20220802 2 login:20220801 login:20220802 aggregate max
# 展示数据
zrange result:20220801:20220802 0 -1 withscores
边栏推荐
猜你喜欢

Mobile zte ZXV10 B860AV2. 1 - A_S905L2_MT7668_ wire brush the firmware package

从云计算到函数计算

Digital-intelligent supply chain management system for chemical manufacturing industry: build a smart supply system and empower enterprises to improve production efficiency

西西成语接龙小助手

浅谈运用低代码技术如何实现物流企业的降本增效

Boost库学习笔记(一)安装与配置

餐饮供应链管理系统

学习探索-给字体设置前景色

Selenium Webdriver驱动自管理

Copycat CNN: Stealing Knowledge by Persuading Confession with Random Non-Labeled Data阅读心得
随机推荐
response的contentType 几种类型
Flutter实战-请求封装(四)之gzip报文压缩
小满nestjs(第一章 介绍nestjs)
LeetCode 每日一题——1403. 非递增顺序的最小子序列
海报 | 夏季高温,危化品安全风险的注意事项必须get!
码蹄集 - MT2142 - 万民堂大厨
浅谈运用低代码技术如何实现物流企业的降本增效
Selenium Webdriver驱动自管理
机器学习(十一):KNN(K近邻)
15 days to upgrade to fight monsters and become a virtual fashion creator
WEB 渗透之SSTI 模板注入
基于clipboard.js对复制组件的封装
拼多多详情API接口深度解读
JSP的Web监听器(Listener)
WEB 渗透之越权
理财产品买入后份额是固定不变的吗?
并发编程原理学习-reentrantlock源码分析
数字化金融企业的产品体系长啥样?
WEB 渗透之XXE&XML
【 Gazebo introductory tutorial] speak the second model library into robot modeling and visualization (editor) model