Redis远程字典服务器(9)—— 类型补充
类型查询传送门:Understand Redis data types | Docs
一,stream类型
官方文档对于这个类型的解释是:streams是一个数据结构,它表现得像一个 “append-only log”,就是只能往后面添加,底层是字符串,就像是一个日志;可以把一个事件投放给多个目标。
首先解释下什么是“事件”:
- 在前面讨论单线程模型时,谈到了epoll / IO 多路复用,每次网卡(socket)上有可读可写得数据,都会通过这种事件回调机制来通知到应用程序代码
- 在前端中,JS里也有事件,比如点击事件,键盘事件等
- 有些操作,我们无法预知它什么时候出现,只能等这个事情出现之后,再采取动作
官方文档的意思,就是stream类型可以用来模拟事件传播得机制,有事件的时候就把字符串插入到数据结构中,然后就会被应用程序检测到从而做出对应得动作
总结:stream就是一个阻塞队列,是Redis作为一个消息队列得重要支撑,属于是List blpop / brpop 的升级版本
二,geospatoal类型
这个单词的意思是:“地理空间”,我们经常用“经纬度”来描述地球上的某一个位置,所以geospatoal这个数据结构的作用就是存储坐标(经纬度)。
它存储一些点之后,就可以让用户给定一个坐标,去从刚才存储的点里进行查找(按照半径,矩形区域等等)
简单来说,就是在一个平面放上很多坐标,然后我们可以自定义输入一个坐标,然后按照我们的方法去查找周围的坐标
三,hyperloglog类型
这个类型很简单,应用场景只有一个,就是估算集合中的元素个数。
Set有一个应用场景,就是统计服务器的UV(用户访问的次数),使用set可以解决,但是当UV的数据量很大,set就会消耗很多内存空间
假设set存userid,每个userid8个字节,1亿 UV ==> 8亿字节 ==> 0.8G ==> 800MB,乍一看没很大,但是如果使用hyperloglog,仅仅可以使用12KB空间就能实现上述效果
之所以set要消耗这么大的空间,是因为它要存储每个userid元素,而hyperloglog不存储元素的内容,但是能记住“元素的特征”,从而在新增元素的时候,能够知道当前新增的元素,是一个已经存在的元素,还是第一次出现的元素
所以这个类型的最大作用就是:用来计数,但是不能告诉你这些元素都是啥,适合应用于单纯的计数的场景
对于“元素的特征”,要想理解这个还是得分析源码,其核心思路是“位操作”,所以存在一定精确性,存在一定的误差,所以是估算集合中的元素,官方文档中的描述是“误差不超过0.81%”。
注意:hyperloglog存储元素的时候,提取特征的过程是不可逆的,因为信息量丢失(给你块猪肉你可以做成火腿肠,但是给你火腿肠没办法还原成猪肉)
四,bitmap类型
这个就是位图,关于位图之前已经详细解释过:C++——位图与布隆过滤器
就是使用比特位来表示整数,达到节省空间的效果,所以位图本质上还是一个集合,属于Set针对整数的特化版本,目的就是节省空间,而且位运算比较高效
五,bitfield类型
可以把这个类型叫做“位域”,我们之前在C语言进阶讲过一个东西叫做“位段”,位段也可以叫做“位域”:C语言进阶——自定义类型_c语言自义类型-CSDN博客
位域本质是是一种让我们精确进行位操作的一种方法,bitfield和C语言中的位段,是非常相似的
bitfield可以理解成一串二进制序列(字节数组),同时可以把这个字节数组的某几个位,赋予特定的含义,并且进行 读取/修改/算数运算 等相关操作
位域这个东西,相比之前的string / hesh来说,目的仍然是节省空间
相关文章:
Redis远程字典服务器(9)—— 类型补充
类型查询传送门:Understand Redis data types | Docs 一,stream类型 官方文档对于这个类型的解释是:streams是一个数据结构,它表现得像一个 “append-only log”,就是只能往后面添加,底层是字符串&#x…...
VMware虚拟机nat无法联通主机
VMware在nat模式下主机无法ping通虚拟机 原因: 虚拟机和对应的网卡不在一个网段 虚拟机开启了防火墙 解决方法: 首先判断虚拟机的网络ip是否和网卡在一个网段上 判断虚拟机使用的网卡 nat模式在VMware虚拟机中一般只有一个对应的网卡 如图笔者的nat网卡为VM…...
「字符串」详解AC自动机并实现对应的功能 / 手撕数据结构(C++)
目录 前置知识 概述 核心概念:fail指针 作用 构建 图示 Code 成员变量 创建销毁 添加词库 文本扫描 复杂度 Code 前置知识 在此前,你应该首先了解trie树(字典树)的概念: 「字符串」详解Trie࿰…...
freecad遭遇网络不同无法安装插件Addon Manager: Unexpected 0 response from server
16:31:18 Addon Manager: Unexpected 0 response from server 16:31:18 Failed to connect to GitHub. Check your connection and proxy settings. 打开freecad的插件管理器时候,有些地方,比如我在家里就不行,在公司就ok。 于是找到了解…...
Ruby模板引擎:构建动态视图的艺术
标题:Ruby模板引擎:构建动态视图的艺术 在Ruby on Rails的世界里,模板引擎是构建动态网页的基石。它们允许开发者将服务器端的逻辑嵌入到HTML中,实现数据的动态展示。本文将深入探讨Ruby中几种常用的模板引擎,包括ERB…...
HarmonyOS NEXT星河版零基础入门(3)
目录 1. 系统弹出框 2.interface转成class类 3.vp/fp 4. 写一个正方形 设置它的宽度 但不设定高度 不论屏幕怎么变实现他的宽高比 5.State 6.图片和资源 7.淘宝镜像 7.1windows 脚本禁用(操作策略 允许npm包的命令可执行) 8. es6&ArkTS中…...
第二十讲 python中的异常结构-try except-else-finally
目录 1.try... except 结构 2. try... 多个except结构 3. try...except...else结构 4. try...except...finally结构 5. return语句和异常处理问题 5.1 异常处理前的 return 5.2异常处理后的 return 5.3 finally 块中的 return 6.常见的异常 1.try... except 结构 try except 是…...
springer 投稿系统中返修注意点
初次提交 初次提交时, manuscript 提交的是 pdf 文件 返修后提交 在经过返修之后需要提交的是注意一下几点: 此时提交的Blined manuscript ,虽然名字没变,但不能再提交pdf 文件, 而需要提交的是可编辑的源文件 .te…...
CSS:display和visiblity
隐藏元素- display:none和visibility:hidden display 属性设置一个元素应如何显示,visibility 属性指定一个元素应可见还是隐藏。 隐藏一个元素可以通过吧display属性设置为“none”,或者把visibility属性设置为“hidden”。但是这两种会产生不同的结果…...
43.x86游戏实战-XXX寻找吸怪坐标
免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 工具下载: 链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd6tw3 提…...
Redis地理位置相关应用
下面是一个结合 MySQL 数据库和 Redis 的地理位置服务示例,包含表结构、PHP 代码和 Redis 操作,用于处理基于地理位置的数据存储和查询。 1. 创建 MySQL 数据库表 首先,创建一个用于存储位置信息的 MySQL 表,如下所示࿱…...
优化WAN流量:如何通过调整系统设置降低企业网络成本
一、症状与问题背景 当电脑显示空闲状态时,如果满足以下条件,第二拨号链接可能会意外激活: 您正在使用基于 Microsoft Windows 的计算机,该计算机连接到远程网络并且是 Active Directory 域服务 (AD DS) 域的成员。 您通过二级…...
Java-HttpHeaders请求头或响应头
HttpHeaders 是 Spring Framework 中的一个类,用于封装 HTTP 头部信息。它提供了一种方便的 方式来设置 HTTP 请求头和处理 HTTP 响应头。下面分别介绍如何使用 HttpHeaders 来设置请求 头和处理响应头。 设置请求头 在发送 HTTP 请求时,可以通过 HttpHeaders 设置各种请…...
Elasticsearch高阶查询
Elasticsearch高阶查询 文章目录 Elasticsearch高阶查询相关性和相关性算分相关性 (Relevance)什么是TF-IDFBM25explain关键字Boosting如何通过Boost控制想要的文档排在前面? 布尔查询(bool Query)查询语法语法格式 单字符串多字段查询三种场…...
【流媒体】RTMPDump—RTMP_Connect函数(握手、网络连接)
目录 1. RTMP_Connect函数1.1 网络层连接(RTMP_Connect0)1.2 RTMP连接(RTMP_Connect1)1.2.1 握手(HandShake)1.2.2 RTMP的NetConnection(SendConnectPacket) 2.小结 RTMP协议相关&am…...
通过https方式访问内网IP
单位要做个用浏览器扫二维码的功能。我先在本地测试一直不成功,后来放到服务器上运行成功了。比较了一下,服务器上是https,但是本地没有证书。我问了一下信安的同事,要求二维码必须在本地扫描,不能上公网。所以只好在本…...
flutter 键盘弹出 都会重新Build
原因是调用MediaQuery.of(context)后,点击TextField组件时会导致调用build方法。 解决方法:在Scaffold组件的body嵌套Builder组件,然后设置一个BuildContext变量,将Builder组件中的context传递给BuildContext变量,然后…...
RedisDistributedLock 分布式锁
设计一个简单的 RedisDistributedLock 类,实现单例模式,并包含基本的锁定机制。这个类将使用 Redis 来管理锁,确保在分布式系统中资源的同步访问 import redis.clients.jedis.Jedis;public class RedisDistributedLock {private static Redi…...
Java之包装类
Java中的包装类(Wrapper Classes)是基本数据类型的对象包装类。Java为每个基本数据类型(如int、char等)提供了对应的包装类,使得基本类型可以被当作对象来处理。这些包装类位于java.lang包中。 包装类的用途 对象化&a…...
Linux - 权限
文章目录 一、用户二、文件 一、用户 1、Linux下有两种用户:超级用户(root)、普通用户。 超级用户:可以再linux系统下做任何事情,不受限制 。 普通用户:在linux下做有限的事情。 超级用户的命令提示符是“…...
wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...
观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...
剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...
使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...
华为OD机考-机房布局
import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...
Caliper 负载(Workload)详细解析
Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...
elementUI点击浏览table所选行数据查看文档
项目场景: table按照要求特定的数据变成按钮可以点击 解决方案: <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...
土建施工员考试:建筑施工技术重点知识有哪些?
《管理实务》是土建施工员考试中侧重实操应用与管理能力的科目,核心考查施工组织、质量安全、进度成本等现场管理要点。以下是结合考试大纲与高频考点整理的重点内容,附学习方向和应试技巧: 一、施工组织与进度管理 核心目标: 规…...
