• 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位来描述一个数字是否被存储,因此是非常节省空间的操作

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

    bitfields

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

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

    struct demo{
    	int aa : 8;
    	int bb : 16;
    	int cc : 8;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

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

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

  • 相关阅读:
    Redis从入门到放弃(11):雪崩、击穿、穿透
    终于有人把Java程序员必学知识点整理出来了,令人有如醍醐灌顶
    Linux驱动基础
    架构设计方法(4A架构)-信息架构
    linux快捷操作方式
    判断一个字符串是否为另外一个字符串旋转之后的字符串
    求二叉树的宽度(可执行)
    Linux使用ifconifg命令,没有显示ens33
    ArrayList底层结构和源码分析
    Vue中的数据代理
  • 原文地址:https://blog.csdn.net/m0_60867520/article/details/132836868