Redis的key类型只能为String,但是value的类型却有很多种,这里列出常见的五种类型:
1.String
2.hash
3.set
4.list
5.有序的set == set + 权重
Redis内部采用自动适应的方式来实现数据类型,比如说String在,某些情况下采用int,某些情况下采用row,但总体和String类型用法一样。可以使用Object encoding key 方法来查看value具体的数据类型。
下面是数据类型的具体情况:
1.String
可能类型:
row:最基本的类型,相当于byte[];
int: 当value为整数时。
embstr:针对短字符进行优化,占的空间更小。
2.Hash
可能类型:
hashtable:最基本的哈希表,但是不等于Java中的HashTable。
ziplist:当元素较少时,优化为ziplist来节省空间。
3.List
可能类型:
1.linkedlist:相当于普通的链表。
2.ziplist:也是在元素较少时使用。
但是在Redis3.2后引入了qicklist,代替了linkedlist和ziplist,qicklist本身为一个链表,每个元素为ziplist,可以说是同时兼顾了两者的优点。
4.Set
可能类型:
hashtable:最基本的哈希表。
intset:当都为整数时,优化为intset。
5.Zset
可能类型:
skiplist:跳表,每个节点上有多个指针域,可以使得查询的时间复杂度为O(logN)。
ziplist:和上面类似,在元素较少时使用。