【redis有序集合操作】

news2024/9/30 9:34:44

【zcount:统计有序集合分数区间内的成员数量】
zadd user_login 1 one
zadd user_login 3 two
zadd user_login 4 three
zadd user_login 5 four

ZCOUNT 返回有序集 key 中, score 值在 min 和 max 之间(默认包括 score 值等于 min 或 max )的成员的数量。
zcount user_login 1 4 => 3 (1<=score<=4)
zcount user_login 1 (4 => 2 (1<=score<4)
zcount user_login (1 (4 => 1 (1<score<4)

如果单纯统计整个有序集合的成员个数,使用ZCARD
zcard user_login //4

【zunionstore :合并若干个有序集合为新的有序集合】
ZUNIONSTORE 用于合并有序集合,例如把单个月内每天的有序集合key合并为一个总的key,再对这个月的key进行统计。
#将user_login和user_login_2两个集合合并为新的有序集合all_login。user_login和user_login_2的score分别乘以1和2,最后两个数组相同成员的分数相加(sum)。如果aggregate=max,则取两个数组中分数最大的成员。

zunionstore all_login 2 user_login user_login_2 weights 1 2 aggregate sum

#如果不加weights和aggregate参数,weights默认是传1,aggregate默认是传sum。

zunionstore all_login 2 user_login user_login_2

#单独指定aggregate=max

zunionstore all_login_max 2 user_login user_login_2 aggregate max

#查看合并后的有序集合

zrange all_login 0 -1 withscores

实战

在这里插入图片描述
在这里插入图片描述

zunionstore 可以不带weights和aggregate,weights默认是传1,aggregate默认是传sum。

在这里插入图片描述

或者不指定weights,指定aggregate=max.

在这里插入图片描述
【有序集合设置排行榜】
新增成员
zadd kyl_rank 30 xsd
删除成员
zrem kyl_rank cwx
为某个成员增加分数
zincrby kyl_rank 55 xsd

获取所有数据,从小到大排序
zrange kyl_rank 0 -1 withscores
获取所有数据,从大到小排序
zrevrange kyl_rank 0 -1 withscores
获取分数前三名
zrevrange kyl_rank 0 2 withscores

获取某个成员的分数
zscore kyl_rank swl
获取某个成员的排名
zrevrank kyl_rank cwx (第一名为0)
zrank正序 zrevrank倒序

实战

在这里插入图片描述
获取排名前三的成员
在这里插入图片描述

PHP统计日活和周活的代码实战

 /**
     * 统计日活、周活
     * 每天都会生成一个记录登录用户id的有序集合(UserLogin_20221230),有序集合的存储格式:[用户id => 设备类型(1安卓、2苹果)]
     */
    public function getActiveUserTest()
    {
        $redis = get_redis('redis_conf');//正式环境
        $key = 'UserLogin_'.date('Ymd');
        //获取当日的日活用户
        $actUserCount = $redis->zCard($key);
        //获取当日的日活设备
        $actADCount = $redis->zCount($key,'1','(2');//统计score在[1,2)区间(即score=1)的成员数量。这里是统计使用安卓设备的用户数量。
        $actIOSCount = $redis->zCount($key,'2','(3');//统计score在[2,3)区间 (即score=2)的成员数量。这里是统计使用苹果设备的用户数量。
      
        //获取当周的日期列表
        $week = date('N');//代表今天是星期几 1~7 => 周一~周日
        //$sunday = date('Ymd' ,strtotime( '-' . ($week-1) .' days', time()));//获取本周周一的日期
        $weekDayList = array();
        for ($i =1;$i<=7;$i++) {
            //获取本周的所有日期
            $weekDayList[] = date('Ymd' ,strtotime( '-' . ($week-$i) .' days', time()));
        }
        //合并当周的所有天数的有序集合
        $union_key = 'union_key_test';
        $redis->zUnionStore($union_key,$weekDayList,null,'MAX');
        //统计周活
        $actUserCount_week = $redis->zCard($union_key);
        $actADCount_week = $redis->zCount($union_key,'1','(2');
        $actIOSCount_week = $redis->zCount($key,'2','(3');
        $redis->del($union_key);//删除掉这个临时合并的有序集合
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/128641.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

socket套接字

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起探讨和分享Linux C/C/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。 socket套接字1. 什么是socket套接字2. socket编程3. 网络字节序4. IP地址转换函数5. sockaddr数据结构…

【答学员问】服务器上安装好LAMP架构,部署wordpress之后网页端无法访问

文章目录问题反馈问题排查1. 首先是IP&#xff1a; 确认无误&#xff1a;2. 安装一下 php看看是否安装&#xff1a;3. 最后测试PHP是否能够解析再次沟通分析整理列清单排查测试过程1. 上传包解压2. 安装好LAMP架构并测试是否支持php3. 测试是否可以访问wordpress4. 查看日志排查…

Maven是怎么样构建Spring Boot项目的?

准备好项目运行所需的环境后&#xff0c;就可以使用IDEA开发工具搭建一个Spring Boot入门程序了。我们既可以使用Maven方式构建项目&#xff0c;也可以使用Spring Initializr快捷方式构建项目。这里先介绍如何使用Maven方式构建Spring Boot项目&#xff0c;具体步骤如下。 1.初…

SpringBoot+VUE前后端分离项目学习笔记 - 【06 SpringBoot集成Mybatis实现数据查询】

配置文件改成yaml格式&#xff1a; application.yml server:port: 9090spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/joyce?serverTimezoneGMT%2b8username: rootpassword: 123456写基本的功能来验证后台数据查询功能 …

了解初级测试人员从测试自动化开始需要什么?

文章目录 前言 将测试自动化视为软件开发 选择一种编程语言开始 学习干净的代码实践和原则 了解自动化中有用的设计模式 学习干净的代码实践和原则 学习网络工作原理的基础知识 选择一个 UI 自动化工具开始 了解 HTTP 协议以及如何自动化 API 测试 熟悉数据库基础知识…

React 配置文件(三)配置本地IP地址和端口号

1.在环境变量中配置好对应IP地址和端口号,拿UAT来举例 2.在config-overrides.js中配置域名和端口号 3.在package.json中配置好启动脚本 "scripts": { "start": "react-app-rewired start", "uat": "dotenv -e .env.uat react-app…

Android之蚂蚁森林能量水滴效果

最近公司有个需求&#xff0c;需要一个类似于蚂蚁森林能量水滴浮动效果&#xff0c;所以有了这篇文章&#xff0c;目前在项目里&#xff0c;没时间提出来做demo&#xff0c;有代码欠缺的地方欢迎指出&#xff0c;一定补上。 文章目录一&#xff1a;效果图二&#xff1a;具体实现…

HotPDF Delphi PDF VCL完全形成PDF文档

HotPDF Delphi PDF VCL完全形成PDF文档 HotPDF Delphi PDF&#xff0c;用于创建和创建PDF文档的应用程序名称。您的公司已在您之前发布&#xff0c;以便在Delphi和C中使用。事实上&#xff0c;使用这个库&#xff0c;您将能够以不同的方式编辑、执行、构建和管理PDF文档。如果您…

configmap中data变成字符串问题(k8s踩坑)

发现问题 编写text文件&#xff0c;用于创建要给nginx的configmap&#xff0c;如下&#xff1a; [rootmaster redis]# vim txt apiVersion: v1 kind: ConfigMap metadata:name: nginx-confignamespace: redis data:nginx.conf: |#user nginx;worker_processes 1;#error_log…

【pandas】教程:4-显示数据

Pandas 显示数据 本节使用的数据为 data/air_quality_no2.csv&#xff0c;链接为 pandas案例和教程所使用的数据-机器学习文档类资源-CSDN文库 import pandas as pd import matplotlib.pyplot as pltair_quality pd.read_csv("data/air_quality_no2.csv", index_co…

知物由学 | SO VMP 加壳与混淆,为移动应用提供函数级保护

导读&#xff1a;VMP 是一种用于软件保护的软件&#xff0c;对软件进行加壳&#xff0c;加固厂商都有自己的 VMP 方案&#xff0c;但值得注意的是&#xff0c;native 层的 VMP 方案并不成熟&#xff0c;兼容性只是其中一个影响因素&#xff0c;性能更是导致该方案无法普及的重要…

2022年广西最新建筑八大员(材料员)模拟真题及答案

百分百题库提供建筑八大员&#xff08;材料员&#xff09;考试试题、建筑八大员&#xff08;材料员&#xff09;考试预测题、建筑八大员&#xff08;材料员&#xff09;考试真题、建筑八大员&#xff08;材料员&#xff09;证考试题库等,提供在线做题刷题&#xff0c;在线模拟考…

C++仍然是2023年值得学习的好语言吗?

如今所有学习C的人都不得不面临一个问题&#xff0c;即C已经大大失去了它受欢迎程度。它同时被三种编程语言所取代 - python&#xff0c;Java和JavaScript。这就引出了一个问题&#xff0c;2023年是否还值得学习C&#xff1f; 如果您学习C是为了在IT领域工作&#xff0c;那么学…

系分 - 软件工程

个人总结&#xff0c;仅供参考&#xff0c;欢迎加好友一起讨论 系分 - 软件工程 考点摘要 信息/软件系统的生命周期&#xff08;★★&#xff09;软件开发方法&#xff08;★★★&#xff09;软件开发模型&#xff08;★★★★&#xff09;逆向工程&#xff08;★&#xff09…

一步一步改写Observer观察者模式

简单的概述&#xff1a; Observer模式是建立一个一&#xff08;Subject&#xff09;对多&#xff08;Observer&#xff09;的依赖关系&#xff0c;并且做到当“一”变化的时候&#xff0c;依赖这个“一”的多也能够同步自动改变。 Observer的结构&#xff1a; Subject相当于…

H5 拖动排序 美食排行榜

尝试写一下拖动元素进行排序&#xff0c;真是想到什么去写什么 &#x1f602;&#xff0c;有的时候很多人老是跟我说&#xff0c;别人都封装好了&#xff0c;你为什么还要自己去实现一下&#xff0c;写的还没别人好。但我总感觉所有都用别人写好的&#xff0c;就放弃思考的机会…

linux的CPU使用率达到100%的快速定位方式

一.问题现象 Linux服务器&#xff08;操作系统版本是centos7.9&#xff09;上面部署了若干Java站点服务,突然收到运维的CPU异常g告警&#xff0c;到了影响业务的情况发生&#xff0c;经初步排查&#xff0c;未出现异常进程&#xff0c;排除挖矿病毒的原因。 二.排查思路 &am…

[Verilog]Verilog经典电路设计(一)

Verilog经典电路设计&#xff08;一&#xff09; 1.1 8位移位寄存器 module shifter (din , clk, clr, dout) ; input din, clk, clr; output [7:0] dout; reg [7:0] dout_data;always (posedge clk) begin if (!clr) dout_data < 8b0; //同步清 &#xff0c;高电平…

第二证券|美国巨头向欧盟宣战,暴跌25%,芯片大国告急

“暴利税”完全激怒美国动力巨子。 3万亿美国巨子直接将欧盟告上法庭&#xff0c;当地时间12月28日&#xff0c;埃克森美孚公司正式申述欧盟&#xff0c;要求其撤销对石油集团征收的一项新“暴利税”。该公司表明&#xff0c;欧盟方面征收“暴利税”的行为超出了法律权限。别的…

蓝牙学习八(配对与绑定)

1.简介 Paring&#xff08;配对&#xff09;和Bonding&#xff08;绑定&#xff09;是实现蓝牙射频通信安全的一种机制&#xff0c;有两点需要注意&#xff1a; Paring/bonding实现的是蓝牙链路层的安全&#xff0c;对应用层来说是完全透明的。也就是说&#xff0c;不管有没有…