返回顶部
首页 > 资讯 > 数据库 >redis 存储之 redisObject
  • 411
分享到

redis 存储之 redisObject

redis存储之redisObject 2022-02-07 13:02:49 411人浏览 绘本
摘要

RedisObject redis 是 key-value 存储系统,其中key类型一般为字符串,而 value 类型则为 redis 对象(redisObject)。Redis 对象可以绑定各种类型的数据,譬如 string、l

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指向的地址。

您可能感兴趣的文档:

--结束END--

本文标题: redis 存储之 redisObject

本文链接: https://lsjlt.com/news/6728.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • redis 存储之 redisObject
    redisObject redis 是 key-value 存储系统,其中key类型一般为字符串,而 value 类型则为 redis 对象(redisObject)。Redis 对象可以绑定各种类型的数据,譬如 string、l...
    99+
    2022-02-07
    redis 存储之 redisObject
  • Redis妙用之存储用户token问题
    目录Redis 存储用户token登陆时生成一个token存入Redis在每个页面生成时,提供token注销时,删除tokenRedis 处理token问题java—基于...
    99+
    2023-03-06
    Redis妙用 Redis存储用户 Redis token
  • redis持久化存储
    redis持久化存储 redis持久化存储 redis多被用于缓存和消息中间件,当被用作缓存时,数据的读写都是在内存中进行的,而内存一旦在主机断电或者主机重启时里面的数据将被清空,为保证数据不被丢失,r...
    99+
    2020-12-12
    redis持久化存储
  • redis怎么存储session
    使用 redis 存储 session 有两种方法:使用 redis 作为 session 存储,创建一个哈希表存储用户 session 数据,以用户 id 或会话 id 为键,以键值对...
    99+
    2024-06-03
    redis 并发访问 键值对
  • Redis对象与redisObject超详细分析源码层
    目录一、对象二、对象的类型及编码RedisObject 结构体三、不同对象编码规则四、redisObject结构各字段使用范例4.1 类型检查(type字段)4.2 多态命令的实现(encoding)4.3 内存回收和共...
    99+
    2022-11-28
    Redis对象 RedisredisObject RedisredisObject源码
  • Android存储之分区存储适配
    一.Android存储分区介绍 1.简介 Android 存储分为内部存储(Internal storage)和外部存储(External storage)。有许多用户认为外部存储意味着SD存储卡或外...
    99+
    2023-09-14
    android
  • Redis之GEO存储地理位置信息的使用
    目录常用APIgeoaddgeoposgeodistgeoradiusbymembergeohash在外卖软件中的附近的美食店铺、外卖小哥的距离,打车软件附近的车辆,交友软件中附近的...
    99+
    2024-04-02
  • Redis如何存储对象
    目录Redis存储对象首先引入依赖创建一个Jedis实例方式一:将对象转化为jsON字符串存入redis方式二:将对象序列化后存到redis方式三:将对象用Hash数据类型存储Redis可以存储java对象吗答案:是可以...
    99+
    2022-06-16
    Redis存储对象 Redis对象存储 存储对象Redis
  • Redis怎么存储对象
    这篇“Redis怎么存储对象”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Redis怎么存储对象”文章吧。Redis存储对象...
    99+
    2023-07-02
  • redis怎么存储数据
    redis 数据存储机制 Redis 是一种内存数据库,它将数据存储在服务器的内存中。这使得 Redis 能够实现极高的读写性能。Redis 支持多种数据类型,包括: 字符串:用于存...
    99+
    2024-06-03
    redis 持久化存储 键值对
  • redis缓存存储Session原理机制
    目录基于 Redis 存储 Session首先安装 redis 存储引擎的包设置session过期时间分布式获取Session:(redis)基于 Redis 存储 Session ...
    99+
    2024-04-02
  • Redis系列(三):redisServer、redisDb、redisObject、sds四大结构体理解
    一.源码下载: Windows中的Redis源码下载:https://github.com/microsoftarchive/redis/tree/3.2 根据官网说明可知,用VS2013编译,但是必须更新到update5, 否则...
    99+
    2016-06-21
    Redis系列(三):redisServer redisDb redisObject sds四大结构体理解
  • android数据存储之文件存储方法
    文件存储是 Android 中最基本的一种数据存储方式,它不对存储的内容进行任何的格式化处理,所有数据都是原封不动的保存到文件当中的。 概述 文件存取的核心就是输入流和输出流...
    99+
    2022-06-06
    方法 存储 Android
  • Android中的数据储存之文件存储
    当我们在使用各种程序时,其实际上是在和各种数据打交道,当我们聊QQ,刷微博,看新闻,其实都是在和里面的数据交互例如在聊天时发出的消息,以及在登录时输入的账号密码,其实都是瞬时数据,那什么是瞬时数据呢?就是指储存在内存中,有可能因为程序关闭或...
    99+
    2023-06-04
  • MySQL之存储引擎
    Storage Engine是指表类型,也即在表创建时指明其使用的存储引擎,同一库中不同表可以使用不同的存储引擎,但建议要使用同一种存储引擎 MySQL体系结构 存储引擎 In...
    99+
    2024-04-02
  • SQL之存储过程
    文章目录 一、介绍二、基本语法三、变量系统变量自定义变量局部变量 四、条件、循环判断if语法:参数casewhilerepeatloop 五、游标条件处理程序 一、介绍 存储...
    99+
    2023-08-31
    sql 数据库 mysql
  • MySQL之存储过程
    我的小站:我的博客 1.1 存储过程简介 存储过程是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数的值 MySQL 5.0 版本开始支持存储过程。 存储过程(Stored Procedur...
    99+
    2023-09-02
    数据库 mysql sql
  • Redis geohash 地理位置存储
    本文将对 Redis 的 GEO 特性进行介绍, 说明这个特性相关命令的用户, 并在最后说明如何使用这些命令去实现“查找附近的人”以及“摇一摇”这两个功能。   版本要求 因为 Redis 目前的稳定版本为 Redis 3....
    99+
    2021-12-28
    Redis geohash 地理位置存储
  • Redis持久化存储详解
    为什么要做持久化存储 持久化存储是将 Redis 存储在内存中的数据存储在硬盘中,实现数据的永久保存。我们都知道 Redis 是一个基于内存的 nosql 数据库,内存存储很容易造成数据的丢失,因为当服务器关机等一些异常情况都会...
    99+
    2018-04-22
    Redis持久化存储详解
  • redis存储对象的方法
    这篇文章运用简单易懂的例子给大家介绍redis存储对象的方法,代码非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。redis已经应用相当广泛了,但redis本身并没有直接存储对象的方法,我们可...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作