Redis——其他数据类型介绍

概要介绍

Redis中有10种不同的数据类型。之前的blog中介绍了Redis中常见的五大数据类型:String,List,Hash,Set,ZSet。而Redis中还有许多其他的数据类型,一般在特定的场景中使用

Stream

首先介绍一下什么是事件,例如JS中的点击button,键盘输入等等都是事件,后端一直等待前端返回数据,然后采取相应的措施。再例如epoll / io多路复用,网卡/socket上有可读可写的数据时回通过事件的回调机制通知应用程序

而stream类型就可以用来模拟实现事件传播的机制,实际上是一个阻塞队列

Geospatial

用来存储坐标(经纬度),给定坐标后,就可以按照半径,矩形区域来查找存储的点

HyperLogLog

HyperLogLog不存储元素的内容,只记录元素的特征,从而在新增元素时可以判断该元素是否已经存在

而HyperLogLog的作用就是统计集合中元素的个数

如果有一亿个用户,假设使用8个字节存储一个用户信息,那么就需要0.8G内存来存储这些用户信息,而HyperLogLog只需要12KB左右就可以存储这些用户信息

bitmaps

也就是位图,使用bit位来表示整数

例如存储整数7,就可以将从右到左的第7个数字从0变为1,这样就知道7是已经存储过的了

由于只是占用一个bit位来描述一个数字是否被存储,因此是非常节省空间的操作

HyperLogLog bitmaps
占用空间更小 占用空间大
可以存储各种数据类型 只能存储整数
无法提取元素 可以提取元素

bitfields

中文是位域,本质上是让程序员可以精确进行位操作的一种方法

之前在c语言blog中介绍的位段,就是位域

c 复制代码
struct demo{
	int aa : 8;
	int bb : 16;
	int cc : 8;
}

bitfield是一串字节数组,可以将这个字节数组中的某几个位进行读取,修改,算数运算等操作,例如游戏中有血条和蓝条,使用bitfield,可以分别对血条和蓝条进行不同的值的增减操作

相对于string或hash数据类型,bitfield对空间的需求更小

相关推荐
自己的九又四分之三站台几秒前
GeoPackage 到底适合什么场景:从 SQLite 容器到空间数据格式选型
数据库·oracle·sqlite
东方护航数据恢复(深圳)6 分钟前
勒索病毒加密数据库怎么办?深圳 0 赎金解密恢复实录【东方护航数据恢复深圳店】
数据库·数据恢复·服务器数据恢复·勒索病毒·数据镜像
倔强的石头_7 分钟前
应用账号最小权限实践:读写账号、报表账号、运维账号分层
数据库
苦瓜打怪兽11 分钟前
PostgreSQL 报错“字段 datlastsysoid 不存在”排查与解决
数据库·postgresql
XLYcmy34 分钟前
PDF 论文处理器 — 技术报告文档
数据库·python·网络安全·pdf·embedding·dify·rag
ShineWinsu1 小时前
对于Redis:RDB持久化的解析
linux·数据库·redis·缓存·面试·持久化·rdb
做运维的阿瑞1 小时前
MYSQL从语义到执行计划:UNION、EXISTS、IN 的深度辨析
数据库·sql·mysql
Elastic 中国社区官方博客10 小时前
将你自己的密钥用于现有 Elastic Cloud 部署
大数据·数据库·elasticsearch·全文检索
红海云11 小时前
Jev:给智能系统做判断的模型
大数据·数据库·人工智能
wjkjpcba11 小时前
PCBA烧录程序是什么:PCBA包工包料厂家解析烧录与测试
linux·数据库·人工智能·smt贴片加工·pcba贴片加工厂