12.Redis之补充类型渐进式遍历
1.stream
- 官方文档的意思, 就是 stream 类型
- 就可以用来模拟实现这种事件传播的机制~~
- stream 就是一个队列(阻塞队列)
- redis 作为一个消息队列的重要支撑
- 属于是 List blpop/brpop 升级版本.
- 用于做消息队列
2.geospatial
- 用来存储坐标 (经纬度)
- 存储一些点之后,就可以让用户给定一个坐标,去从刚才存储的点里进行査找.(按照半径,矩形区域.)
- 这个功能在"地图"应用中非常重要~~
3.HyperLogLog
- 应用场景只有一个,估算集合中的元素个数.
- Set,有一个应用场景,统计服务器的 UV(用户访问的次数)
- 使用 Set 当然可以统计 UV,但是最大的问题在于,如果 UV 数据量非常大,Set 就会消耗很多的内存空间~~
- 假设 Set 存储 userld, 每个 userld 按照8个字节算~~
- MB1亿 UV -> 8亿字节~~=>0.8G =>800MB(HyperLogLog 可以最多使用 12KB 空间,实现上述效果~)(不是 Redis 专有的~)
- 之所以, 要消耗这么大的空间Set 需要存储每个元素.
- 而 HyperLogLog 不存储元素的内容.
- 但是能够记录"元素的特征”从而在新增元素的时候,能够知道当前新增的元素,是一个已经存在的元素,还是一个崭新的第一次出现的元素.
- 用来计数 (记录出当前集合中有多少个不同的元素)但是不能告诉你这些元素都是啥~~
- The Redis HyperLogLog implementation uses up to 12 KB and provides a standard error of
0.81% 
- 这个东西具体还是得分析源码~~核心思路"位操作"=>精确性~~(存在一定的误差)
4.bitmaps(只针对整数)
- 使用 bit 位来表示整数.
- 0000 0000 0000 0000 0000 0000 0000 0000
- 位图本质上, 就还是一个 集合.属于是 Set 类型针对整数的特化版本~~(节省空间~~)
- HyperLogLog ~.
更省空间呀!!
既可以存储数字,也可以存储字符串~.不存储元素内容,只是计数效果~~ - hyperloglog 存储元素的时候,提取特征的过程
是不可逆的!!(信息量丢失了) - bitmap,类型存储元素了!!
5.bitfields
- C 进阶,自定义数据类型 =>结构体在内存中的布局
- 位段 (不是 段位) =>也叫做位域
- struct Test {
int a:8;
int b:16;
int c:8; - 此处的数字,就描述这个成员实际占几个 bit 位!!
位域 本质上是让我们精确进行位操作的一种方法~~ - 上述 Redis 中的 bitfield 和C中的位域,非常相似的!!
- bitfield 可以理解成一串二进制序列(字节数组)
- 同时可以把这个字节数组中的某几个位,赋予特定的含义, 并且可以进行 读取/修改/算术运算 相关操作~~
6.渐进式遍历
- keys keys *一次性的把整个 redis 中所有的 key 都获取到.(这个操作比较危险.可能会一下子得到太多的 key, 阻塞 redis 服务器!)
- 通过渐进式遍历,就可以做到,既能够获取到所有的 key, 同时又不会卡死服务器~
- 不是一个命令,把所有的 key 都拿到.
而是每执行一次命令,只获取到其中的一小部分~~这样的话保证当前这一次操作不会太卡~~
要想得到所有的 key 就需要多次遍历了~~多次执行渐进式遍历命令(化整为零~)
6.1 scan
以渐进式的⽅式进⾏键的遍历。
SCAN cursor [MATCH pattern] [COUNT count] [TYPE type]命令有效版本:2.8.0 之后时间复杂度:O(1)返回值:下⼀次 scan 的游标(cursor)以及本次得到的键。
redis 127.0.0.1:6379> scan 01) "17"2) 1) "key:12"2) "key:8"3) "key:4"4) "key:14"5) "key:16"6) "key:17"7) "key:15"8) "key:10"9) "key:3"10) "key:7"11) "key:1"redis 127.0.0.1:6379> scan 171) "0"2) 1) "key:5"2) "key:18"3) "key:0"4) "key:2"5) "key:19"6) "key:13"7) "key:6"8) "key:9"9) "key:11"![]()
![]()
- count 这里的 数字,不是说每次遍历都得设置成一样~~
- 这里的渐进式遍历,在遍历过程中,不会在服务器这边存储任何的状态信息此处的遍历是随时可以终止的~~不会对服务器产生任何的副作用~~
渐进性遍历 scan 虽然解决了阻塞的问题,但如果在遍历期间键有所变化(增加、修改、删除),可能导致遍历时键的重复遍历或者遗漏,这点务必在实际开发中考虑。![]()
相关文章:
12.Redis之补充类型渐进式遍历
1.stream 官方文档的意思, 就是 stream 类型就可以用来模拟实现这种事件传播的机制~~stream 就是一个队列(阻塞队列)redis 作为一个消息队列的重要支撑属于是 List blpop/brpop 升级版本.用于做消息队列 2.geospatial 用来存储坐标 (经纬度)存储一些点之后,就可以让用户给定…...
品牌做电商控价的原因
品牌控价确实是一项至关重要的任务,它关乎着品牌形象、市场定位以及长期发展的稳定性。在电商平台上,价格的公开性和透明度使得消费者、经销商和其他渠道参与方都能够轻易地进行价格比较。因此,品牌方必须对电商渠道的价格进行严格的管控&…...
安全面试中的一个基础问题:你如何在数据库中存储密码?
3分钟讲解。 上周的面试故事 职位:初级安全工程师,刚毕业。 开始面试。 我:“这里你提到对数据安全有很好的理解。你能举例说明哪些方面的数据安全吗?” A:“当然。例如,当我们构建一个系统时,会…...
【python深度学习】——torch.min()
【python深度学习】——torch.min 1. torch.min()1.1 计算整个张量的最小值1.2 沿特定维度计算最小值1.3 比较两个张量 1. torch.min() torch.min()接受的参数如下: input: 输入的张量。dim: 沿指定维度寻找最小值。如果指定了该参数,返回一个元组,其中…...
华为校招机试 - 最久最少使用缓存(20240508)
题目描述 无线通信移动性需要在基站上配置邻区(本端基站的小区 LocalCell 与周边邻基站的小区 NeighborCelI 映射)关系, 为了能够加速无线算法的计算效率,设计一个邻区关系缓存表,用于快速的通过本小区 LocalCell 查询到邻小区 NeighborCell。 但是缓存表有一定的规格限…...
第三部分:领域驱动设计之分析模式和设计模式应用于模型
分析模式 分析模式是一种概念集合,用来表示业务建模中的常见结构。它可能只与一个领域有关,也可能跨越多个领域。“分析模式”这个名字本身就强调了其概念本质。分析模式并不是技术解决方案,他们只是些参考,用来指导人们设计特定领…...
PID传感器在光电显示行业VOC气体检测的应用
随着光电显示技术的飞速发展,液晶显示器等显示器件产品已经成为我们日常生活和工作中不可或缺的一部分。然而,在生产过程中,液晶显示器会释放大量的挥发性有机物(VOC)气体,对生产环境及工作人员的健康构成威…...
iOS推送证书过期处理
苹果推送证书的有效期都是一年,将要过期的时候,苹果官方会发邮件提醒。 一、过期 在电脑上找到并打开其它->钥匙串访问; 我的证书可以看到各个App的推送证书,如果过期了,显示红色X 二、重新创建 1、登陆apple开…...
蓝海卓越计费管理系统 agent_setstate.php SQL注入漏洞复现
0x01 产品简介 蓝海卓越计费管理系统是一套以实现网络运营为基础,增强全局安全为中心,提高管理效率为目的的网络安全运营管理系统,提供“高安全、可运营、易管理”的运营管理体验,基于标准的RADIUS协议开发,它不仅支持PPPOE和WEB认证计费,还支持802.1X接入控制技术,与其…...
【leetcode2765--最长交替子数组】
要求:给定一个数组,找出符合【x, x1,x,x-1】这样循环的最大交替数组长度。 思路:用两层while循环,第一个while用来找到符合这个循环的开头位置,第二个用来找到该循环的结束位置,并比较一下max进行记录。 …...
java文档管理系统的设计与实现源码(springboot+vue+mysql)
风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的文档管理系统的设计与实现。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 文档管理系统的…...
西安航空学院电子工程学院领导莅临泰迪智能科技参观交流
5月26日,西安航空学院电子工程学院院长杨亚萍、专业教师刘坤莅临广东泰迪智能科技股份有限公司产教融合实训基地参观交流。泰迪智能科技董事长张良均、副总经理施兴、产品中心负责周东平、校企合作经理吴桂锋与泰迪智能科技韩伟进行热情了接待。双方就专业建设、协同…...
C++|设计模式(二)|简单工厂和工厂方法模式
本文探讨两种广泛使用的创建型模式——简单工厂模式和工厂方法模式,解释他们的实现细节、优势以及应用场景。 在下一篇文章中,我会补充抽象工厂模式,其实工厂模式主要就是为了封装对象的创建过程,如果我们不进行封装,…...
C语言从头学12——流程控制(一)
C语言程序的执行顺序是从前到后依次序执行的。如果想要控制程序执行的流程,就必须使用 流程控制的语法结构,分为条件执行和循环执行。 1、if语句 if 语句在前面的举例中曾经出现过,这里做详细介绍。该语句用于条件判断,满…...
10大领域应该怎么记?
文章目录 5大过程组10大领域49个过程输出输入工具与技术 参考文档: https://mp.weixin.qq.com/s/BJ-Dpn0zxTP0TCbeoJXb9A 5大过程组 启动、规划、执行、监控、收尾 10大领域 巧记:【挣饭进城市,咨购风菜干】【狗子整范进—成人风采】 整…...
通过Ubuntu虚拟机+Linux移植LVGL并通过linux Frame buffer显示
文章参考:https://gitee.com/socbis/linux-lvgl lvgl on linux Frame buffer 主机环境: Ubuntu 18.04lvgl 8.0.1 获取源码并运行demo 获取源码 需要3样东西来构建demo : lvgl核心控件库: 从此处获取源码 lvgl,选择版本 Release v8.0.1. 显示和触摸接…...
M功能-支付平台(三)
target:离开柬埔寨倒计时-221day 前言 今天周六,但是在柬埔寨还是工作日,想着国内的朋友开始休周末就羡慕呀,记不清在这边过了多少个周六了,多到我已经习惯了。而且今天技术部还停电了,真的是热的受不了呀…...
5G工厂长啥样
5G工厂是一种新型的工业互联网基础设施,利用5G为代表的新一代信息通信技术集成,打造新型工业互联网基础设施。在5G工厂中,自动化和智能化设备广泛使用,高度互联的工厂网络得以实现,远程监控和管理成为可能,…...
使用Python操作Jenkins
大家好,Python作为一种简洁、灵活且功能丰富的编程语言,可以与各种API轻松集成,Jenkins的API也不例外。借助于Python中的python-jenkins模块,我们可以轻松地编写脚本来连接到Jenkins服务器,并执行各种操作,…...
网络协议测试仪设计方案:474-便携式手提万兆网络协议测试仪
便携式手提万兆网络协议测试仪 一、平台简介 便携式手提万兆网络协议测试仪,以FPGA万兆卡和X86主板为基础,构建便携式的手提设备。 FPGA万兆卡是以Kintex-7XC7K325T PCIeX4的双路万兆光纤网络卡,支持万兆网络数据的收发和网络协议…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...
深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...
2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...
C++.OpenGL (14/64)多光源(Multiple Lights)
多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...
Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...
搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...
Ubuntu Cursor升级成v1.0
0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开,快捷键也不好用,当看到 Cursor 升级后,还是蛮高兴的 1. 下载 Cursor 下载地址:https://www.cursor.com/cn/downloads 点击下载 Linux (x64) ,…...



