redis操作set时的性能分析y以及一系列问题

redis操作set时的性能分析y以及一系列问题

第一次测试

初始状态

第一次测试

第二次

初始状态

第二次测试

测试代码

Java
package cn.only.hww;

import redis.clients.jedis.Jedis;

import java.util.*;

/**
 * author       : Wayne Hu
 * date created : Created in 2024/6/26 10:41
 * description  :
测试zset的性能
 * class name   : cn.onle.ZsetTest
 */
public class ZsetTest {

    public static void main(String[] args) {
        //
测试数据条数
        final int DATA_SIZE = 100000;
        //
删除条数
        final int DEL_SIZE = 100000;
        // redis
连接
        Jedis jedis = new Jedis("localhost", 6379);
        //
键集合
        Set<String> keySet = new TreeSet<>();
        //
数据集合
        Map<String, Double> dataMap = new TreeMap<>();
        //
生成测试使用的10w条数据
        generateData(keySet, dataMap, DATA_SIZE);
        //
开始往redis中保存数据
        startSavaData(jedis, dataMap);
        //
开始删除数据
        startDelData(jedis, keySet, DEL_SIZE);
        //
释放资源
        destroyProcess(jedis, dataMap, keySet);
    }

    private static void destroyProcess(Jedis jedis, Map<String, Double> dataMap, Set<String> keySet) {
        //
释放资源
        jedis.close();
        //
使用完毕清空集合
        dataMap.clear();
        keySet.clear();
        System.out.println("
资源释放完毕");
    }

    private static void startDelData(Jedis jedis, Set<String> keySet, int DEL_SIZE) {
        System.out.println("开始删除数据");
        // 开始删除数据
        long begin = System.currentTimeMillis();
        // 删除10w条数据
        for (int i = 1; i <= DEL_SIZE; i++) {
            // 删除数据
            jedis.zrem("test-zset", keySet.iterator().next());
        }
        System.out.printf("数据删除完成,删除%s条数据,总共耗时:%s ms%n", DEL_SIZE, (System.currentTimeMillis() - begin));
    }

    private static void generateData(Set<String> keySet, Map<String, Double> dataMap, int DATA_SIZE) {
        System.out.println("开始生成数据");
        // 开始时间
        long begin = System.currentTimeMillis();
        // 生成10w条数据,key从000001-100000;数据全部为“data-test”
        for (int i = 1; i <= DATA_SIZE; i++) {
            // Formatting the key to have leading zeros
            String key = String.format("%06d", i);
            // Assigning the same value to all entries
            Double value = Double.valueOf(i + "6666");
            // Putting the key-value pair into the map
            dataMap.put(key, value);
            keySet.add(key);
        }

        System.out.printf("数据生成完成,生成%s条数据,总共耗时:%s ms %n", dataMap.size(), (System.currentTimeMillis() - begin));
    }

    private static void startSavaData(Jedis jedis, Map<String, Double> dataMap) {
        System.out.println("开始往redis中保存数据");
        // 将生成的数据存入zset中
        long begin = System.currentTimeMillis();
        // 清空一下
        jedis.flushAll();
        jedis.zadd("test-zset", dataMap);
        System.out.printf("数据存入zset完成,总共耗时:%s ms%n", (System.currentTimeMillis() - begin));
    }


}

ZsetScore插入的问题

  1. 插入的数据是有序的

  1. score下的数据结构

Zset(有序集合)的排序规则:

  1. 唯一性:Zset 中的元素是唯一的,同一个元素只能出现一次。
  1. 排序:元素按照 score 的值从小到大排列,如果多个元素有相同的 score,按照字典序排序
  1. 自动更新排序:修改元素的 score 值时,元素的位置会自动调整

其它问题

1. zset分数相同元素排序问题:

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

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

相关文章

液氮罐搬运过程中的安全注意事项有哪些

在液氮罐搬运过程中&#xff0c;安全性是至关重要的考虑因素。液氮是一种极低温的液体&#xff0c;其温度可达零下196摄氏度&#xff0c;在接触到人体或物体时会迅速引发严重的冷冻伤害。因此&#xff0c;正确的搬运和使用液氮罐是保障操作安全的关键。 液氮是一种无色、无味的…

每日一题,力扣leetcode Hot100之128. 最长连续序列

题目理解&#xff1a; 从示例1可以看出简单的连续数字就算&#xff0c;从示例2可以看出当有重复数字时&#xff0c;是不算长度的 解法一&#xff1a; 第一个想到的解法&#xff0c;就是对nums排序&#xff0c;然后双层循环遍历进行判断&#xff0c;当前一个和后一个相减等于…

【鸿蒙学习笔记】位置设置・direction・容器内主轴方向上元素的布局

官方文档&#xff1a;位置设置 目录标题 direction・容器内主轴方向上元素的布局Row direction direction・容器内主轴方向上元素的布局 Row direction Row() {Text(1).height(50).width(25%).fontSize(16).backgroundColor(0xF5DEB3).textAlign(TextAlign.Center)Text(2)…

NVidia 的 gpu 开源 Linux Kernel Module Driver 编译 安装 使用

见面礼&#xff0c;动态查看gpu使用情况&#xff0c;每隔2秒钟自动执行一次 nvidia-smi $ watch -n 2 nvidia-smi 1&#xff0c;找一台nv kmd列表中支持的 GPU 的电脑&#xff0c;安装ubuntu22.04 列表见 github of the kmd source code。 因为 cuda sdk 12.3支持最高到 ubu…

[MySQL][索引][下][理解索引]详细讲解

目录 0.前期准备1.为何IO交互要是Page&#xff1f;2.理解单个Page3.理解多个Page4.页目录5.单页情况6.多页情况7.总结复盘8.InnoDB 在建立索引结构来管理数据的时候&#xff0c;其他数据结构为何不行&#xff1f;9.聚簇索引 vs 非聚簇索引 0.前期准备 建立测试表 create table …

网站开发:使用VScode安装yarn包和运行前端项目

一、首先打开PowerShell-管理员身份运行ISE 输入命令&#xff1a; set-ExecutionPolicy RemoteSigned 选择“全是”&#xff0c;表示允许在本地计算机上运行由本地用户创建的脚本&#xff0c;没有报错就行了 二、接着打开VScode集成终端 输入 npm install -g yarn 再次输入以…

2-38 基于matlab的蚁群算法优化无人机uav巡检

基于matlab的蚁群算法优化无人机uav巡检&#xff0c;巡检位置坐标可根据需求设置&#xff0c;从基地出发&#xff0c;返回基地&#xff0c;使得路径最小。可设置蚁群数量&#xff0c;信息素系数。输出最佳路线长度。程序已调通&#xff0c;可直接运行。 2-38 蚁群算法优化无人…

人工智能算法工程师(高级)课程1-单类目标识别之人脸检测识别技术MTCNN模型介绍与代码详解

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能算法工程师(高级)课程1-单类目标识别之人脸检测识别技术MTCNN模型介绍与代码详解。本文深入探讨了基于PyTorch的人脸检测与识别技术&#xff0c;详细介绍了MTCNN模型、Siamese network以及center loss、sof…

Linux/Windows 系统分区

1. Windows 系统 1.1 系统分区 系统分区也叫做磁盘分区&#xff0c;即分盘&#xff1b; 举个例子&#xff0c;好比家里有一个大柜子&#xff0c;把衣服&#xff0c;鞋子&#xff0c;袜子都放在里面&#xff0c;由于没有隔断&#xff0c;找的时候非常麻烦&#xff0c;找是能找…

ETL数据集成丨通过ETLCloud工具,将Oracle数据实时同步至Doris中

ETLCloud是一个全面的数据集成平台&#xff0c;专注于解决大数据量和高合规要求环境下的数据集成需求。采用先进的技术架构&#xff0c;如微服务和全Web可视化的集成设计&#xff0c;为用户提供了一站式的数据处理解决方案。 主要特点和功能包括&#xff1a; 实时数据处理&…

PyTorch 深度学习实践-卷积神经网络基础篇

视频指路 参考博客笔记 参考笔记二 文章目录 上课笔记代码实现作业实现 上课笔记 如果一个网络全都是由线性层串联起来&#xff08;torch.nn.Linear(xx, yy)&#xff09;&#xff0c;就叫他全连接的网络(左边节点到右边节点任意两个都存在权重) 先看一下吴恩达或者李宏毅老师…

SpringCloudAlibaba-Seata2.0.0与Nacos2.2.1

一、下载 ## 下载seata wget https://github.com/apache/incubator-seata/releases/download/v2.0.0/seata-server-2.0.0.tar.gz## 解压 tar zxvf seata-server-2.0.0.tar.gz二、执行sql文件 ## 取出sql文件执行 cd /seata/script/server/db/mysql ## 找个mysql数据库执行三、…

【随想】代码优化论

序言:时间是我们最宝贵的财富,珍惜手上的每个时分 目录 1.非必要&#xff0c;不修改、不优化 2.需修改、需优化、搞彻底 随着工作年限的增长&#xff0c;接触到的二手代码也越来越多&#xff0c;无论是同事离职留下的垃圾代码&#xff0c;还是接手烂摊子项目代码&#xff0c;…

Java并发04之线程同步机制

文章目录 1 线程安全1.1 线程安全的变量1.2 Spring Bean1.3 如果保证线程安全 2 synchronized关键字2.1 Java对象头2.1.1 对象组成部分2.1.2 锁类型2.1.3 锁对象 2.2 synchronized底层实现2.2.1 无锁状态2.2.2 偏向锁状态2.2.3 轻量级锁状态2.2.4 重量级锁2.2.5 锁类型总结2.2.…

云手机结合自主ADB命令接口 提升海外营销效率

现在&#xff0c;跨境电商直播已经成为在线零售的重要渠道&#xff0c;在大环境下&#xff0c;确保直播应用的稳定性和用户体验至关重要。 云手机支持自主ADB命令接口&#xff0c;为电商直播营销提供了技术支持&#xff0c;使得应用开发、测试、优化和运维更加高效。 什么是A…

postman双击打不开的解决方案

postman双击打不开的解决方案 深入再深入 于 2022-05-09 15:45:56 发布 阅读量3.1k 收藏 2 点赞数 4 文章标签&#xff1a; postman 版权 右键属性 安装路径 更新版本 回滚 问题排查 关键词由CSDN通过智能技术生成 解决方案&#xff1a; 右键-属性&#xff0c;复制安装路…

puzzle(0611)《组合+图论》追捕问题

目录 一&#xff0c;追及问题 1&#xff0c;警察和小偷 2&#xff0c;旋转的4个硬币 3&#xff0c;抓狐狸 二&#xff0c;围堵问题 三&#xff0c;追及围堵 一&#xff0c;追及问题 1&#xff0c;警察和小偷 如下图&#xff0c;警察先走&#xff0c;警察和小偷轮流一人…

开源模型应用落地-FastAPI-助力模型交互-进阶篇(三)

一、前言 FastAPI 的高级用法可以为开发人员带来许多好处。它能帮助实现更复杂的路由逻辑和参数处理&#xff0c;使应用程序能够处理各种不同的请求场景&#xff0c;提高应用程序的灵活性和可扩展性。 在数据验证和转换方面&#xff0c;高级用法提供了更精细和准确的控制&#…

【Git远程操作】理解分布式管理 | 创建远程仓库

目录 1.理解分布式管理 多人协作开发 2.创建远程仓库 2.1仓库名&路径 2.2初始化仓库&设置模板 1.理解分布式管理 目前我们学习的所有内容都是在本地来完成的。&#xff08;add /commit /版本撤销回退/分支管理&#xff09; Git是一个分布式 的版本控制系统。 分支…

c# listview控件调整标题显示顺序

右键点击listview,选择编辑列 修改DisplayIndex listview在成员位置点击上下箭头移动后&#xff0c;实际显示不会改变&#xff0c;因为DisplayIndex没有改变