Redis数据类型讲解

Redis里面常用的数据类型主要由五种:String、Hash、List、Set、Sorted Set。首先对Redis的对象处理机制进行简单地介绍。

一、对象处理机制

1、既然 Redis 的键值对可以保存不同类型的值,那么很自然就需要对键值的类型进行检查以及多态处理。

2、Redis 构建了自己的类型系统,这个系统的主要功能包括: 

      2.1:redisObject 对象。(它是Redis类型系统的核心,数据库中的每个键、值,以及 Redis 本身处理的参数,都表示为这种数据类型 

      2.2:基于redisObject对象的类型检查。

      2.3:基于redisObject对象的显式多态函数。

      2.4redisObject进行分配、共享和销毁的机制。 


Redis object 结构中有三个属性最重要:type、encoding、ptr

type:记录对象所保存的值得类型 。

encoding:记录了对象所保存的值得编码。

ptr:是一个指针,指向实际保存值的数据结构。


二、字符串

1、REDIS_STRING (字符串)是 Redis 使用得最为广泛的数据类型,它除了是 SET GET 等命令 的操作对象之外,数据库中的所有键,以及执行命令时提供给 Redis 的参数,都是用这种类型 保存的。 

2、新创建的字符串默认使用 REDIS_ENCODING_RAW 编码,在将字符串作为键或者值保存进数据库时,程序会尝试将字符串转为 REDIS_ENCODING_INT 编码。 

3、Redis 的字符串类型命令,基本上是通过包装 sds 数据结构的操作函数来实现的,没有什么需 要说明的地方。 

三、哈希表

REDIS_HASH (哈希表) 是 HSET HLEN 等命令的操作对象,它使用REDIS_ENCODING_ZIPLIST REDIS_ENCODING_HT 两种编码方式 

四、列表

REDIS_LIST (列表) 是 LPUSH LRANGE 等命令的操作对象,它使用REDIS_ENCODING_ZIPLIST REDIS_ENCODING_LINKEDLIST 这两种方式编码 

五、集合

REDIS_SET (集合) 是 SADD SRANDMEMBER 等命令的操作对象,它使用REDIS_ENCODING_INTSET REDIS_ENCODING_HT 两种方式编码 

六、有序集合

REDIS_ZSET (有序集) 是 ZADD ZCOUNT 等命令的操作对象,它使用REDIS_ENCODING_ZIPLIST REDIS_ENCODING_SKIPLIST 两种方式编码 














你可能感兴趣的:(redis,应用场景,数据类型)