Redis里面常用的数据类型主要由五种:String、Hash、List、Set、Sorted Set。首先对Redis的对象处理机制进行简单地介绍。
1、既然 Redis 的键值对可以保存不同类型的值,那么很自然就需要对键值的类型进行检查以及多态处理。
2、Redis 构建了自己的类型系统,这个系统的主要功能包括:
2.1:redisObject 对象。(它是Redis类型系统的核心,数据库中的每个键、值,以及 Redis 本身处理的参数,都表示为这种数据类型 )
2.2:基于redisObject对象的类型检查。
2.3:基于redisObject对象的显式多态函数。
2.4:对redisObject进行分配、共享和销毁的机制。
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 两种方式编码