redis对象类型
redis并没有用我们先前提到的的主要数据结构:SDS,链表,字典,压缩列表,跳跃列表作为redis对象的直接实现.而是基于这些数据 结构创建一个对象系统.
这个系统包括了字符串对象,哈希对象,列表对象,集合对象和有序集合对象.每种对象都至少用到了一个我们前面介绍的数据结构.
一.对象类型以及编码
redis使用对象表示数据库中的键和值.每次新建一个键值对的时候,至少会创建两个对象,键对象和值对象.例如:set msg "hello".msg就是键对象,hello就是值对象.
redis每一个对象都是由一个redisObject来表示.
typedef struct redisObject { unsigned type:4;//类型 unsigned encoding:4;//编码 unsigned lru:REDIS_LRU_BITS; int refcount;/*引用计数*/ void *ptr; } robj;
1.1 类型,编码格式以及它们的对应关系
对象的类型分别对应字符串对象,哈希对象,列表对象,集合对象和有序集合对象
#define REDIS_STRING 0 #define REDIS_LIST 1 #define REDIS_SET 2 #define REDIS_ZSET 3 #define REDIS_HASH 4
对象的编码分别对应之前介绍的八种基本类型
#define REDIS_ENCODING_RAW 0 /* Raw representation */ #define REDIS_ENCODING_INT 1 /* Encoded as integer */ #define REDIS_ENCODING_HT 2 /* Encoded as hash table */ #define REDIS_ENCODING_ZIPMAP 3 /* Encoded as zipmap */ #define REDIS_ENCODING_LINKEDLIST 4 /* Encoded as regular linked list */ #define REDIS_ENCODING_ZIPLIST 5 /* Encoded as ziplist */ #define REDIS_ENCODING_INTSET 6 /* Encoded as intset */ #define REDIS_ENCODING_SKIPLIST 7 /* Encoded as skiplist */
各类型的存储结构如下图所示:
相关推荐
2. **Redis数据类型及操作**:这是Redis的核心部分,包括五大数据类型: - **字符串(String)**:最基础的数据类型,支持设置、获取、增加、减少等操作。 - **哈希(Hash)**:用于存储键值对集合,适用于存储对象。 ...
哈希类型在存储复杂对象时非常有用,如用户信息或文章详情。 最后是**集合类型**(Set)。Set是无序且不重复的元素集合。我们可以使用`sadd`添加元素,`srem`移除元素,`smembers`获取所有成员,以及`sinter`、`...
在Redis中,哈希可以用于存储对象,如用户信息,其中每个字段对应对象的一个属性。例如,`HSET user:123 name "John" age 25`,`name`和`age`就是哈希的字段,分别存储了用户的姓名和年龄。 3. 列表(List) 列表允许...
哈希类型是字符串字段和字符串值之间的映射,所以它适合用于表示对象。 - hset命令用于设置哈希字段的字符串值。 - hget用于获取存储在哈希中的字段值。 - hmset和hmget分别用于一次性设置和获取多个字段值。 通过...
Redis是一个开源的使用ANSI C编写的高性能键值对数据库,通常被称为数据结构服务器。它被广泛用于构建高性能的web应用、缓存、消息队列等场景。PHPRedis是Redis的一个PHP扩展模块,提供了丰富的API接口用于与Redis...
接下来是Hash类型,它允许我们将多个键值对存储在同一个Redis键中,适合存储具有多个字段的对象。使用Hash类型可以更细粒度地管理数据,避免了数据的冗余存储。例如,使用以下代码来操作Hash类型数据: ```csharp ...
### Redis十大类型知识点详解 #### 一、Redis字符串(String) **定义与特点:** - **定义:**Redis 字符串是最基本的数据类型,每个键值对中的值都是一个字符串。 - **特点:** - **二进制安全:**支持任意格式...
将 Redis 类型直接映射到 Ruby 对象Redis::Objects - 将 Redis 类型直接映射到 Ruby 对象 2.0 版的重要变化Redis::Objects 2.0 引入了几个重要的向后不兼容更改。目前,可以使用以下方式安装 2.0 gem install redis-...
总结:本教程详细介绍了Redis的五种数据类型在Java中的应用,包括字符串、哈希、列表、集合和有序集合。通过实例代码展示了如何使用Jedis API进行增删查改操作。对于Java开发者来说,掌握这些内容对于提升项目中的...
Redis 是一个高性能的键值存储系统,它支持多种数据类型,包括字符串(String)、哈希(Hash)、列表(List)、集合(Set)以及有序集合(Sorted Set)。这些数据类型的特性使得Redis成为处理各种数据结构的理想选择...
本文主要探讨Redis中的数据类型,包括String、List、Set和Sorted Set,并结合实际应用讲解它们的特点和使用方法。 1. String String是最基本的数据类型,可以存储任何类型的数据,如数字、字符串等。在Redis中,...
标题“redis字节码存压缩对象”涉及到的知识点主要包括 Redis 对象的存储方式以及压缩技术在 Redis 中的应用。下面将详细介绍这两个方面: 1. Redis 对象存储: - Redis 支持五种基本数据类型:字符串(String)、...
3. **值类型测试**: 测试代码可能会展示如何将不同类型的值存入Redis,并验证读取结果的正确性。例如,创建多个键值对,包括String类型、List类型、Set类型和SortedSet类型,然后读取并验证它们。 4. **性能优化**:...
hashes类型是一个键值对集合,它非常适合存储对象。hashes类型常用操作包括hset、hget、hincrby、hexists等,用于对hash中的字段进行赋值、获取、自增等操作。 2.3 lists类型及操作 lists是一个有序的字符串列表,...
2. **Redis数据类型操作**:C#中可以操作Redis的多种数据类型,如字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set)。例如,使用`StringSet`和`StringGet`方法操作字符串,`...
String是Redis中最基本的数据类型,可以包含任何数据,比如JPEG图片或者序列化的对象。它非常灵活,因为可以对数据进行增加、删除、计数等操作。String的常用命令包括get、set、incr、decr和mget等。 #### 应用场景...
### Redis支持的数据类型及相关命令详解 #### 一、Redis简介及数据类型概述 Redis是一种开源的、基于内存的键值存储系统,同时也被广泛视为一种数据结构服务器。它支持多种数据类型,包括字符串(Strings)、列表...
**Ruby-RedisObjects:直接将Redis类型映射成Ruby对象** Ruby-RedisObjects是一个非常实用的库,它允许开发者在Ruby应用程序中直接操作Redis数据结构,就像操作Ruby对象一样。这个框架是Ruby社区对ORM(对象关系...
Redis的数据类型包括字符串(Strings)、哈希(Hashes)、列表(Lists)、集合(Sets)和有序集合(Sorted Sets),这些数据结构提供了多样化的存储和操作方式。例如,字符串可以用来存储简单的键值对;哈希则适用于存储对象,...