redis 字符串/哈希/集合/有序集合string/hash/set/sorted set存储上限及应用范围

字符串(String)

字符串是Redis值中最基本的一种。Redis字符串是二进制安全的,这意味着Redis字符串可以包含任何类型的数据,例如JPEG图像或序列化的Ruby对象。

字符串值的最大长度为512 MB

应用范围:

  • 使用INCR系列中的命令将字符串用作原子计数器:INCR,DECR,INCRBY。

  • 使用APPEND命令附加到字符串。

  • 使用字符串作为GETRANGE和SETRANGE的随机访问向量。

  • 在很小的空间中编码大量数据,或者使用GETBIT和SETBIT创建一个Redis支持的Bloom Filter 。

列表(Lists)

Redis列表只是字符串列表,按插入顺序排序。可以将元素添加到Redis列表中,从而将新元素推到列表的头部(左侧)或尾部(右侧)。

一个列表的最大长度为232 (4294967295,每列表可以存储超过40亿个元素)

从时间复杂度的角度来看,Redis列表的主要功能是支持恒定时间插入和删除头部和尾部附近的元素,即使有数百万个插入项也是如此。在列表的极端附近,访问元素的速度非常快,但是如果您尝试访问一个很大的列表的中间,则访问元素的速度会很慢,因为这是O(N)操作。

应用范围:

  • 在社交网络中对时间轴建模,请使用LPUSH以便在用户时间轴中添加新元素,并使用LRANGE来检索一些最近插入的项目。

  • 您可以将LPUSH与LTRIM一起使用,以创建一个列表,该列表从不超过给定数量的元素,而只记住最新的N个元素。

  • 列表可以用作消息传递原语,例如,参见众所周知的Resque Ruby库,用于创建后台作业。

  • 您可以使用列表做更多的事情,此数据类型支持许多命令,包括阻塞命令,例如BLPOP。

集合 (Sets)

Redis集是字符串的无序集合。可以在O(1)中添加,删除和检查成员的存在(恒定时间,而与Set中包含的元素数量无关)。

一个集合的最大长度为232 (4294967295,每列表可以存储超过40亿个元素)

应用范围:

  • 您可以使用Redis集来跟踪独特的事物。想知道访问指定博客帖子的所有唯一IP地址吗?每次处理页面视图时,只需使用SADD。这样避免插入重复的IP。

  • Redis集很好地表示关系。您可以使用Set代表每个标签,使用Redis创建标签系统。然后,可以使用SADD命令将具有给定标签的所有对象的所有ID添加到代表该特定标签的Set中。您是否希望所有对象的所有ID同时具有三个不同的标签?只需使用SINTER即可。

  • 您可以使用Set使用SPOP或SRANDMEMBER命令随机提取元素。

哈希(Hash)

Redis哈希是字符串字段和字符串值之间的映射,因此它们是表示对象的理想数据类型(例如,具有多个字段(例如名称,姓氏,年龄等)的User):

一个哈希的最大长度为232 (4294967295,每列表可以存储超过40亿个元素)

有序集合(Sorted Sets)

与Redis集类似,Redis排序集是非重复的String集合。区别在于,排序集的每个成员都与得分相关联,该得分用于从最小到最大得分中获取排序的排序集。虽然成员是唯一的,但分数可能会重复。

一个有序集合的最大长度为232 (4294967295,每列表可以存储超过40亿个元素)

应用范围:

  • 在大型在线游戏中担任排行榜,每次提交新分数时,您就可以使用ZADD对其进行更新。您可以轻松地使用ZRANGE吸引顶级用户,也可以给定用户名,使用ZRANK返回其在列表中的排名。一起使用ZRANK和ZRANGE可以向用户显示得分与给定用户相似的得分。速度很快。

  • 排序集通常用于索引Redis中存储的数据。例如,如果您有许多代表用户的哈希,则可以使用已排序的集合,其元素具有用户的年龄作为得分,而用户的ID作为值。因此,使用ZRANGEBYSCORE检索具有给定年龄段的所有用户将非常简单快捷。

最后结论:

字符串(Strings)类型:一个String类型的value最大可以存储512M

列表(Lists)类型:list的元素个数最多为2^32-1个,也就是4294967295个。

集合(Sets)类型:元素个数最多为2^32-1个,也就是4294967295个。

哈希(Hashes)类型:键值对个数最多为2^32-1个,也就是4294967295个。

有序集合(Sorted sets)类型:跟Sets类型相似。

官方文档:

https://redis.io/topics/data-types

相关文章

文章浏览阅读1.3k次。在 Redis 中,键(Keys)是非常重要的概...
文章浏览阅读3.3k次,点赞44次,收藏88次。本篇是对单节点的...
文章浏览阅读8.4k次,点赞8次,收藏18次。Spring Boot 整合R...
文章浏览阅读978次,点赞25次,收藏21次。在Centos上安装Red...
文章浏览阅读1.2k次,点赞21次,收藏22次。Docker-Compose部...
文章浏览阅读2.2k次,点赞59次,收藏38次。合理的JedisPool资...