我的编程空间,编程开发者的网络收藏夹
学习永远不晚

redis 存储之 redisObject

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

redis 存储之 redisObject

redis 存储之 redisObject

redisObject

redis 是 key-value 存储系统,其中key类型一般为字符串,而 value 类型则为 redis 对象(redisObject)。Redis 对象可以绑定各种类型的数据,譬如 string、list 和set。因此他能很好的将属性和数据分离开。

typedef struct redisObject {
    // 刚刚好32 bits
    // 对象的类型,字符串/列表/集合/哈希表
    unsigned type:4;
    
    // 未使用的两个位
    unsigned notused:2; 
  
    // 编码的方式,Redis 为了节省空间,提供多种方式来保存一个数据
    // 譬如:“123456789” 会被存储为整数123456789
    unsigned encoding:4;
  
    // 当内存紧张,淘汰数据的时候用到
    unsigned lru:22; 
  
    // 引用计数
    int refcount;
  
    // 数据指针
    void *ptr;
} robj;

其中,void *ptr 执行具体的数据。

redisObject 数据的属性

redis.h 中定义了 struct redisObject,它是一个简单优秀的数据结构,因为在 redisObject 中数据属性和数据分开来了,其中,数据属性包括数据类型,存储编码方式,淘汰时钟,引用计数。

数据类型

标记了 Redis 对象绑定的是什么类型的数据,有下面几种可能的值;

字符串

define REDIS_STRING 0

列表

define REDIS_LIST 1

集合

define REDIS_SET 2

有序集合

define REDIS_ZSET 3

哈希

define REDIS_HASH 4

存储编码方式

存储编码方式,一个数据,可以以多种方式存储。譬如,数据类型为 REDIS_SET 的数据编码方式可能为 REDIS_ENCODING_HT,也可能为 REDIS_ENCODING_INTSET。

define REDIS_ENCODING_RAW 0

define REDIS_ENCODING_INT 1

define REDIS_ENCODING_HT 2

define REDIS_ENCODING_ZIPMAP 3

define REDIS_ENCODING_LINKEDLIST 4

define REDIS_ENCODING_ZIPLIST 5

define REDIS_ENCODING_INTSET 6

define REDIS_ENCODING_SKIPLIST 7

淘汰时钟

Redis 对数据集占用内存的大小有实时的计算,当超出限额时,会淘汰超时的数据。

引用计数

一个 Redis 对象可能被多个指针引用。当需要增加或者减少引用的时候,必须调用相应的函数,程序员必须遵守这一准则。因为Redis 是单进程单线程工作的,所以增加/减少引用的操作不必保证原子性,这在 memcache 中是做不到的(memcached 是多线程的工作模式,需要做到互斥)。

ptr

数据指针,真正的数据 保存在 ptr指向的地址。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

redis 存储之 redisObject

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

redis 存储之 redisObject

redisObjectredis 是 key-value 存储系统,其中key类型一般为字符串,而 value 类型则为 redis 对象(redisObject)。Redis 对象可以绑定各种类型的数据,譬如 string、list 和set。因此他能很好的
redis 存储之 redisObject
2022-02-07

Redis妙用之存储用户token问题

这篇文章主要介绍了Redis妙用之存储用户token问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-03-06

redis怎么存储session

使用 redis 存储 session 有两种方法:使用 redis 作为 session 存储,创建一个哈希表存储用户 session 数据,以用户 id 或会话 id 为键,以键值对存储数据。使用 redis 作为 session 持久
redis怎么存储session
2024-06-03

redis持久化存储

redis持久化存储 redis持久化存储redis多被用于缓存和消息中间件,当被用作缓存时,数据的读写都是在内存中进行的,而内存一旦在主机断电或者主机重启时里面的数据将被清空,为保证数据不被丢失,redis为我们提供两种数据持久化存储方式:RD
redis持久化存储
2020-12-12

Redis如何存储对象

目录Redis存储对象首先引入依赖创建一个Jedis实例方式一:将对象转化为jsON字符串存入redis方式二:将对象序列化后存到redis方式三:将对象用Hash数据类型存储Redis可以存储java对象吗答案:是可以Redis存储对象
2022-06-16

Redis怎么存储对象

这篇“Redis怎么存储对象”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Redis怎么存储对象”文章吧。Redis存储对象
2023-07-02

redis怎么存储数据

redis 数据存储机制Redis 是一种内存数据库,它将数据存储在服务器的内存中。这使得 Redis 能够实现极高的读写性能。Redis 支持多种数据类型,包括:字符串:用于存储简单的文本数据。哈希表:用于存储键值对,其中键是唯一的。列
redis怎么存储数据
2024-06-03

java如何大量储存redis缓存

本文介绍了在Java中大规模存储Redis缓存的最佳实践和技术,包括:使用RedisCluster分片数据,提高可用性和可扩展性。分片键确保数据在集群中均匀分布。连接池减少连接开销,提升性能。哨兵模式保证集群高可用性。持久化机制防止数据丢失。Lua脚本提升原子操作性能。监控和调整优化Redis配置。此外,还提供了其他最佳实践建议,如选择合适的数据类型、限制键大小、使用管道和事务,以及考虑使用分布式缓存。
java如何大量储存redis缓存
2024-04-02

VictorialMetrics存储原理之索引存储格式

索引构建完成后又是如何去持久化数据的呢?保存的数据又是怎样的格式呢?本节我们将对此进行详细讲解。
VictorialMetrics存储原理之索引存储格式
2024-04-23

android数据存储之文件存储方法

文件存储是 Android 中最基本的一种数据存储方式,它不对存储的内容进行任何的格式化处理,所有数据都是原封不动的保存到文件当中的。概述 文件存取的核心就是输入流和输出流。 Android文件的操作模式 文件的相关操作方法文件读写的实现
2022-06-06

Android中的数据储存之文件存储

当我们在使用各种程序时,其实际上是在和各种数据打交道,当我们聊QQ,刷微博,看新闻,其实都是在和里面的数据交互例如在聊天时发出的消息,以及在登录时输入的账号密码,其实都是瞬时数据,那什么是瞬时数据呢?就是指储存在内存中,有可能因为程序关闭或
2023-06-04

redis如何存储list对象

在Redis中,可以使用列表数据结构存储list对象。Redis中的列表是一种有序的字符串列表,可以按照插入顺序存储多个字符串。以下是使用Redis存储list对象的一些常用命令:1. LPUSH:将一个或多个值插入到列表的头部- 示例:L
2023-09-11

编程热搜

目录