Redis支持的数据类型及使用场景

key和value的存储大小限制

String:value   512M

List:元素个数2^32-1,4294967295(430w)

Set(zset):元素个数最2^32-1,4294967295

Hash:键值对个数最多为2^32-1,也就是4294967295个。

redisObjec(父类)统一五种类型,之间传递方便(隐藏具体类型信息)。redisObjec定义type和encoding识别不同传递时

五个成员:对象类型(type)、底层编码(encoding)、lru(最近访问时间)、refcount(引用数)、*ptr(指向具体对象的指针)。一共占16字节。

一、 String

(1)常用命令如下:

(2)Redis中的自增命令和自减命令:

(3)其他:

1、获取字符串长度 

2、往字符串append内容 

3、设置和获取字符串的某一段内容 

4、设置及获取字符串的某一位(bit) 

5、批量设置一系列字符串的内容

三、List

双向链表,dup,free,match对应节点复制释放,节点值对比函数,listNode节点用void * 指针,对void * 里数据自定义节点值的复制、释放和比较函数

底层实现是quicklist(快速列表:ziplist 压缩列表linkedlist 双端链表 )。两端插入和弹出,可当数组、队列、栈等,O(1)

场景:粉丝列表最新消息排行,消息队列

优缺点:支持反向查找和遍历,方便操作,带来额外内存开销。

LRANGE,0起始索引,-1结束索引,可取所有元素。

四、Set

底层实现是intset整数集合,元素不多时用)或hashtable。

    intset:有序,无重复。 16,32,64位的。如所有整数都16位,加32位升级成32位数组。

    HashMap:value永远为null的,计算hash来快速排重,这也是set能提供判断一个成员是否在集合内的原因。

列表存储多个相同字符串,集合散列表保证每个字符串不相同,Set:各不相同的元素,无序排列。

场景:关注人,粉丝。Redis提供了求交集、并集、差集,实现如共同关注、二度好友

https://blog.csdn.net/xlgen157387/article/details/60958657

你可能感兴趣的:(Redis支持的数据类型及使用场景)