首页 > 数据库 >Redis基本数据结构

Redis基本数据结构

时间:2024-05-25 17:29:35浏览次数:25  
标签:基本 存储 场景 Hash Redis 数据量 数据结构 采用

String

数据结构

  • 如果存储的是整型,直接把值存储在RedisObject里面, 数据类型为int。
  • 如果存储的数据量不大(早期版本,32字节),采用动态字符串SDS存储,存储类型是embstr。
  • 超过32字节,采用动态字符串SDS进行存储,存储类型是raw。

embstr和raw类型的区别在于,RedisObject和embstr是连续存储的,只需要访存一次,而raw是分开存储的,需要访存两次。

应用场景

  • 共享session或者token
  • incr 计数
  • setnx 实现分布式锁

Hash

数据结构

  • 数据量不大时采用压缩列表进行存储
  • 否则采用与hashmap类型的存储结构:数组+链表

与HashMap的存储结构有何不同?

  • Redis的Hash字典的值只能存储字符串
  • Redis的Hash在rehash时采用渐进式Hash

应用场景

  • 缓存对象
  • 存储商品信息

Set

数据结构

  • 无序唯一
  • 采用整数集合
  • Hash表

应用场景

  • 点赞
  • 共同关注

Zset

数据结构

  • 数据量较小时,采用压缩列表
  • 采用跳表存储

应用场景

  • 排序

List

数据结构

  • 相当于Java的LinkedList
  • 数据量较小时,采用压缩链表
  • 否则采用快速链表

应用场景

  • 消息队列

标签:基本,存储,场景,Hash,Redis,数据量,数据结构,采用
From: https://blog.csdn.net/weixin_43993064/article/details/139107271

相关文章

  • 企业生产环境中的麒麟V10(ARM架构)操作系统部署jdk和redis三主三从交叉版集群
    前言:麒麟ARM操作系统是国企和政务机关推行信创化选择率比较高的一款操作系统,然而ARM操作系统非主流的X86系统,除了命令一样,在架构方面差别极大,初次接触多多少少会踩坑,下面我将在公司中部署的实例列举出来,供大家参考,ip和设计机密信息不方便展示,统用虚拟信息代替。经过多次验证,用了......
  • Java数据结构与算法(平衡二叉树)
    前言平衡二叉树是为了提高二叉树的查询速度,通过满足特定的条件来保持其平衡性。平衡二叉树具有以下特点:左子树和右子树的高度差不会大于1,这是为了确保树的高度不会过大,从而减少查询时的磁盘I/O开销,提高查询速度。平衡二叉树上的所有结点的平衡因子(左子树深度减去右子树深度的......
  • go go-redis 使用lua保证操作的原子性
      Redis是应对高并发的常用工具,在常用缓存技巧中讲过相关技巧。但有些业务场景,使用Redis会遇到问题,如电商里的秒杀、扣减库存等。拿减库存举例,一般需要两步:先扣减库存,获取扣减后的库存值V如果V小于0,说明库存不够,需要将扣减的值再加回去;如果V大于等于0,则执行后续操作......
  • SCSS 基本使用详解
    一、引言SCSS是Sass(SyntacticallyAwesomeStylesheets)的其中一种语法,是一种预处理器脚本语言,能够扩展CSS的功能,使其更加强大和高效。SCSS保留了CSS的原有语法,同时增加了变量、嵌套规则、混合宏(mixin)、继承等高级功能。本文将详细介绍SCSS的基本使用方法,帮助读者......
  • Redis 源码学习记录:集合 (set)
    无序集合Redis源码版本:Redis-6.0.9,本篇文章无序集合的代码均在intset.h/intset.c文件中。Redis通常使用字典结构保存用户集合数据,字典键存储集合元素,字典值为空。如果一个集合全是整数,则使用字典国语浪费内存。为此,Redis设计了intset数据结构,专门用来保存整数......
  • Redis常问八股
    1.sortedSet底层sortedset中的每一个元素都带有一个score属性可以基于score属性对元素进行排序,底层的实现是一个跳表加hash表。可排序元素不重复查询速度快2.NoSQL和SQLSQL1对数据的格式有严格的约定Table必须定义每个属性的数据格式每个Table必须含有主键只能存储Tab......
  • Redis Stream消息队列
    工具类部分内容packagecom.hwd.campus.common.redis.utils;importcom.hwd.campus.common.redis.constant.RedisKeyPrefixConst;importcom.hwd.campus.common.redis.service.RedisListSelect;importcom.hwd.campus.common.redis.service.RedisSelect;importlombok.AllA......
  • 数据结构(栈)
    1.栈的概念和结构概念:栈是一种线性表,它只能从固定的一端进行数据的插入和删除,这一端称为栈顶,另一端称为栈底。栈遵循先入后出的原则。压栈:栈的插入操作可以称为进栈/压栈/入栈,入数据在栈的顶部。出栈:栈的删除操作叫出栈,出的数据也是在栈顶。进栈:出栈:2.栈的实现栈的实......
  • 数据结构(树)
    1.树的概念和结构树,顾名思义,它看起来像一棵树,是由n个结点组成的非线性的数据结构。下面就是一颗树:树的一些基本概念:结点的度:一个结点含有的子树的个数称为该结点的度;如上图:A的为6叶结点或终端结点:度为0的结点称为叶结点;如上图:B、C、H、I...等结点为叶结点非终端结点或......
  • 基本数据类型和字符串转换
    基本数据类型和字符串转换中8种包装类提供不同类型间的转换方式:Number父类中提供的6种方法。parseXXX()静态方法valueof()静态方法注意:需保证类型兼容,否则抛出NumberFormatException异常。源代码:publicclassDemo01{publicstaticvoidmain(String[]args){//基本数据类......