首页 > 数据库 >Redis的数据类型总结

Redis的数据类型总结

时间:2023-05-24 12:33:07浏览次数:44  
标签:总结 对象 数据类型 Redis value 列表 key 集合 字典

1:String

String有三种编码方式:

int(整数型,直接以RedisObject存储)、

raw(大于等于32位,使用sds进行存储)、内存结构为*ptr指向一个sdshdr,需要申请两次内存,可以修改!)

embstr(小于32位),其中embstr只需要一次内存分配,数据比较小的时候使用,但他是只读的,如果需要修改会变为raw再执行修改

2:List

List的编码方式有ZipList(压缩列表——可类比数组,压缩列表的内存块是连续的,并分配内存的次数一次即可,也就是类似于embstr,内存只分配一次)、Linkedlist(一个双向不循环链表)

当列表对象同时满足以下两个条件时,列表对象使用ziplist进行存储,否则使用linkedlist存储

  1. 列表对象保存的所有字符串元素的长度小于64字节

  2. 列表对象保存的元素数量小于512个

3:Hash

  编码方式有ZipList、HashTable,ziplist编码的哈希对象底层实现是压缩列表,hashtable底层实现是字典,哈希对象中的每个key-value对都使用一个字典键值对来保存。字典键值对即是,字典的键和值都是字符串对象,字典的键保存key-value的key,字典的值保存key-value的value。

4:Set:

使用set增加的时候可以保证去重,比如文章中用户每次点赞的时候不允许重复

  1. 集合对象的编码可以是intset和hashtable之一。从名称就可以知道,IntSet即为整数类集合对象

intset编码的集合对象底层实现是整数集合,所有元素都保存在整数集合中。IntSet底层实现是有序集合,集合对象使用intset编码需要满足两个条件:一是所有元素都是整数值二是元素个数小于等于512个;不满足任意一条都将使用hashtable编码。

intset 使用一个唯一且有序排列的数组来保存元素,在查找时使用二分查找,支持类型升级

hashtable编码的集合对象底层实现是字典,字典的每个键都是一个字符串对象,保存一个集合元素,不同的是字典的值都是NULL;可以参考java中的hashset结构。

5:ZSet

编码方式有 ziplist和skiplist

使用ziplist时保存key-value的键值对,为了保证范围查找和单独查找分值,采用了字典+跳表的形式,字典和跳表共享entry的地址

标签:总结,对象,数据类型,Redis,value,列表,key,集合,字典
From: https://www.cnblogs.com/studyConfig/p/17427942.html

相关文章

  • BeanUtils使用总结
    [color=red][size=x-large]Commons-BeanUtils学习笔记[/size][/color[color=red][b]1、BeanUtils一共分4个包:[/b][/color][b]org.apache.commons.beanutilsorg.apache.commons.beanutils.convertersorg.apache.commons.beanutils.localeorg.apache.commons.beanutils.loc......
  • ROS2指令总结
    查看功能ros2nodelistros2topiclistros2servicelistros2actionlist查看节点信息:ros2nodeinfo<node_name>话题ros2topicecho<topic_name>查看话题的详细信息:ros2topicinfo<topic_name>查看话题的数据类型:ros2topiclist-t查看数据类型的具......
  • Redis 的bitmap byte转位bit
    bitmap我们知道redis的bitmap本身不是一种数据结构,底层实际上依靠字符串进行存储,可以借助字符串进行位操作,由于redis的字符串最大内存位512MB,所以bitmap的bit位也是有上限的,8*1024*1024*512=2^32,由于C语言字符串的末尾都有一位分隔符,所以bitmap存储的实际上限位2^32-1......
  • 第一章Redis概述-动力节点最新Redis7笔记
    1Redis概述1.1Redis简介【动力节点】Redis入门到高级教程,全网最新最全redis缓存教程,redis百科大全Redis,Remote Dictionary Server,远程字典服务,是一个使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、NoSQL开源内存数据库,其提供多种语言的API。Redis之所以称......
  • SpringBoot中操作Redis解析JsonArray数据为对象List(ruoyi字典值sys_dict为例)
    场景若依前后端分离版手把手教你本地搭建环境并运行项目:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/108465662在上面搭建系统的基础上,会将系统的字典值缓存进redis中。看数据格式存储的是Json数组,如何从redis中读取并解析成对象的list从而进行数据处理。注......
  • ADT抽象数据类型
    数据抽象:由一组操作所刻画的数据类型抽象类型:强调作用于数据上的操作,程序员和客户端无需关心数据具体是如何存储的,只需设计/使用操作即可;可变和不可变数据类型:可变类型的对象:提供了可改变其内部数据的值的操作;不可变数据对象:其操作不改变内部值,而是构造新的对象Creator:构造器......
  • 关于redis的描述、数据结构、持久化学习笔记
    前言本文围绕面试问题、redis学习记录。本文是个人的笔记,会有遗漏或含糊的地方。描述下redisredis是一款非关系型数据库,它是以key-value的形式存在数据,因为它的数据在内存中所以它的读写速度极高。当然它支持持久化,将数据以二进制形式或者以命令的形式持久化到磁盘。然后......
  • 今日总结
    今日报告代码时间:5h代码行数:不到七百行吧发表的博客:4篇遇到的问题与收获:得知老师下周一要进行测试,我连忙进行了javaweb的复习,编写了一个javaweb程序进行练习现在对于我来说,难的是JONS技术和script技术,vue也没学会......
  • 每日总结-23.5.23
    <%@pageimport="san.Thesql"%><%@pageimport="san.Pd_stu"%><%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPEhtmlPUBLIC......
  • 每日总结2023-05-23
    今天对于javaweb进行了复习以及回忆,在进行javaweb项目中使用idea进行时,webServlet注解不能正常使用,经讨论,查找资料,发现是路径错误,应该是/包名/注解名/的格式,在使用中发生了以上错误并加以改正。packageservlet;importbean.keBean;importrepository.KeRep;importjava......