Redis数据结构-RedisObject

2024-05-16 01:36

本文主要是介绍Redis数据结构-RedisObject,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.7 Redis数据结构-RedisObject

Redis中的任意数据类型的键和值都会被封装为一个RedisObject,也叫做Redis对象,源码如下:

1、什么是redisObject:
从Redis的使用者的角度来看,⼀个Redis节点包含多个database(非cluster模式下默认是16个,cluster模式下只能是1个),而一个database维护了从key space到object space的映射关系。这个映射关系的key是string类型,⽽value可以是多种数据类型,比如:
string, list, hash、set、sorted set等。我们可以看到,key的类型固定是string,而value可能的类型是多个。
⽽从Redis内部实现的⾓度来看,database内的这个映射关系是用⼀个dict来维护的。dict的key固定用⼀种数据结构来表达就够了,这就是动态字符串sds。而value则比较复杂,为了在同⼀个dict内能够存储不同类型的value,这就需要⼀个通⽤的数据结构,这个通用的数据结构就是robj,全名是redisObject。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Redis的编码方式

Redis中会根据存储的数据类型不同,选择不同的编码方式,共包含11种不同类型:

编号编码方式说明
0OBJ_ENCODING_RAWraw编码动态字符串
1OBJ_ENCODING_INTlong类型的整数的字符串
2OBJ_ENCODING_HThash表(字典dict)
3OBJ_ENCODING_ZIPMAP已废弃
4OBJ_ENCODING_LINKEDLIST双端链表
5OBJ_ENCODING_ZIPLIST压缩列表
6OBJ_ENCODING_INTSET整数集合
7OBJ_ENCODING_SKIPLIST跳表
8OBJ_ENCODING_EMBSTRembstr的动态字符串
9OBJ_ENCODING_QUICKLIST快速列表
10OBJ_ENCODING_STREAMStream流

五种数据结构

Redis中会根据存储的数据类型不同,选择不同的编码方式。每种数据类型的使用的编码方式如下:

数据类型编码方式
OBJ_STRINGint、embstr、raw
OBJ_LISTLinkedList和ZipList(3.2以前)、QuickList(3.2以后)
OBJ_SETintset、HT
OBJ_ZSETZipList、HT、SkipList
OBJ_HASHZipList、HT

这篇关于Redis数据结构-RedisObject的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/993503

相关文章

关于redis一些问题记录

问题一:启动redis时出现警告,使用下列命令(已解决)       问题二:启动时,需要解决的警告(未解决)       问题三:使用自己的配置文件启动redis时,可能会遇到: Could not connect to Redis at 127.0.0.1:6379: Connection refused 原因:6379 没有断开,使用“exit”后,重新使用redis-c

Redis操作指南

目录 一、概述 4 1.1 目的 4 1.2 适用对象 4 1.3 文档内容 4 二、下载Redis及安装Redis 4 2.1 下载Redis 4 2.2 安装Redis 4 2.2.1 解压和编译 4 2.2.2 创建工作目录 5 三、 配置Redis 5 3.1 设置后台运行 5 3.2 设置工作目录 6 3.3 设置监听地址 6 3.4 设置pid存放路径 6

redis 5.0.2 搭建集群

前言 我们日常在对于redis的使用中,经常会遇到一些问题 高可用问题,如何保证redis的持续高可用性。容量问题,单实例redis内存无法无限扩充,达到32G后就进入了64位世界,性能下降。并发性能问题,redis号称单实例10万并发,但也是有尽头的。 哈希槽的概念 Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value 时,redis

Centos安装redis-5.0.2

一. 下载redis,并编译 redis官网地址:https://redis.io/download $ wget http://download.redis.io/releases/redis-5.0.2.tar.gz $ tar xzf redis-5.0.2.tar.gz $ cd redis-5.0.2 $ make $ cd src $ make install 二.启动方式

Redis的SETNX的使用

一.介绍 在 Redis 里,所谓 SETNX,是「SET if Not eXists」的缩写,也就是只有不存在的时候才设置,可以利用它来实现锁的效果。 SETNX key value 将 key 的值设为 value ,当且仅当 key 不存在。 若给定的 key 已经存在,则 SETNX 不做任何动作。 二.选项命令 在SET命令中,有很多选项可用来修改命令的行为。 以下是SET命令

springboot2.1.1 集成 redis

一.poml文件 <!-- spring boot redis 缓存引入 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><version>2.0.4.RELEASE</version></dependency><!-

docker之安装redis环境

一.下载包 拉取最新的redis包 [root@localhost ~]# docker pull redisUsing default tag: latestlatest: Pulling from library/redis8ec398bc0356: Pull complete da01136793fa: Pull complete cf1486a2c0b8: Pull comp

CentOS7使用Docker安装Redis图文教程

1.拉取Redis镜像 这里制定了版本,不指定默认latest最新版 docker pull redis:6.0.8 提示信息如下即为下载成功 2.上传配置文件 官方配置文件(找自己对应的版本):reids.conf 或者将如下配置文件命名为redis.conf,上传到centos7系统,上传的目录可以自定义,我这里设置的是上传到/home/redis/,并新建了个data目录用于挂

nestJs链接redis

给大家推荐一个库,地址:Yarn   service import { Injectable } from '@nestjs/common';import { RedisService as RedisServices, DEFAULT_REDIS_NAMESPACE } from '@liaoliaots/nestjs-redis';import Redis from 'iored

【深入理解MySQL的索引数据结构】

文章目录 📕索引底层数据结构与算法📙索引数据结构📘二叉树📘红黑树📘Hash📘B-Tree📘B+Tree 📙表在不同存储引擎的存储结构📘MyISAM存储引擎索引实现📚文件结构📚非聚集索引 📘InnoDB存储引擎索引实现📚文件结构📚聚集索引 📙为什么DBA总推荐使用整型自增主键做索引📙为什么非主键索引结构叶子节点存储的是主键值?📙MySQL最左前缀优化原则是怎