缓存到队列再到事件处理的各种问题
Redis主要数据类型:String(字符串),Lists(列表),Sets(集合),Hashes(哈希),Sorted sets(有序集合),Streams(流),Bitmaps,Geospatial indexes,Bitfields,HyperLogLog,Extensions。
一、String(字符串)
Redis 字符串存储字节序列,包括文本、序列化对象和二进制数组。 因此,字符串是最基本的 Redis 数据类型。 它们通常用于缓存,但它们支持其他功能,这些功能也允许您实现计数器并执行按位运算。
限制
默认情况下,单个 Redis 字符串的最大大小为 512 MB。
基本命令
- SET
- 仅当字符串值尚不存在时,SETNX
- GET
- MGET
二、Lists(列表)
Redis 列表是字符串值的链接列表。 Redis 列表经常用于:
- 实现堆栈和队列。
- 为后台工作程序系统构建队列管理。
限制
Redis 列表的最大长度为 2^32 - 1 (4,294,967,295) 个元素。
基本命令
- LPUSH 在列表的头部添加一个新元素;RPUSH添加到尾部。
- LPOP 从列表的头部删除并返回一个元素;RPOP
- LLEN
- LMOVE
- LTRIM
阻止命令
列表支持多个阻止命令。 例如:
- BLPOP
- BLMOVE
三、Sets(集合)
Redis 集是唯一字符串(成员)的无序集合。 您可以使用 Redis 集有效地:
- 跟踪唯一项目(例如,跟踪访问给定博客文章的所有唯一 IP 地址)。
- 表示关系(例如,具有给定角色的所有用户的集合)。
- 执行常见的集合操作,例如交集、并集和差分。
限制
Redis 集的最大大小为 2^32 - 1 (4,294,967,295) 个成员。
基本命令
• SADD 将新成员添加到集合中。
• SREM从集合中删除指定的成员。
• SISMEMBER测试字符串的集合成员资格。
• SINTER 返回两个或多个集合共有的成员集(即交集)。
• SCARD 返回集合的大小(也称为基数)
例子
- 存储用户 123 和 456 的收藏书籍 ID 集:
> SADD user:123:favorites 347
(integer) 1
> SADD user:123:favorites 561
(integer) 1
> SADD user:123:favorites 742
(integer) 1
> SADD user:456:favorites 561
(integer) 1
四、Redis hashes
Redis 哈希是结构化为字段值对集合的记录类型。 您可以使用哈希来表示基本对象和存储计数器分组等。
基本命令
限制
每个哈希最多可以存储 4,294,967,295 (2^32 - 1) 字段值对。 实际上,哈希仅受托管 Redis 部署的 VM 上的总体内存限制
五、Redis sorted sets
Redis 排序集是按关联分数排序的唯一字符串(成员)的集合。 当多个字符串具有相同的分数时,字符串将按字典顺序排序。 排序集的一些用例包括:
- 排行榜。例如,您可以使用排序集轻松维护大型在线游戏中最高分的有序列表。
- 速率限制器。特别是,您可以使用排序集来构建滑动窗口速率限制器,以防止过多的 API 请求。
基本命令
- ZADD 将新成员和关联的分数添加到排序集。如果成员已存在,则会更新分数。
- ZRANGE 返回在给定范围内排序的排序集的成员。
- ZRANK 返回所提供成员的排名,假设排序是按升序排列的。
- ZREVRANK 返回所提供成员的秩,假设排序集按降序排列。
六、Redis Streams
Redis 流是一种数据结构,其作用类似于仅追加日志。 您可以使用流实时记录和同时联合事件。 Redis 流用例的示例包括:
- 事件源(例如,跟踪用户操作、点击等)
- 传感器监测(例如,现场设备的读数)
- 通知(例如,在单独的流中存储每个用户的通知记录)
Redis 为每个流条目生成一个唯一的 ID。 您可以在以后使用这些 ID 检索其关联的条目,或读取和处理流中的所有后续条目。
Redis 流支持多种修剪策略(以防止流无限增长)和多个消费策略
基本命令
七、geospatial(Redis地理空间)
Redis 地理空间索引允许您存储坐标并搜索它们。 此数据结构可用于查找给定半径或边界框内的邻近点。
基本命令
八、 HyperLogLog(Redis超级日志)
HyperLogLog 是一种估计集合基数的数据结构。作为一种概率数据结构,HyperLogLog 以完美的精度换取高效的空间利用率。
Redis HyperLogLog 实现最多使用 12 KB,并提供 0.81% 的标准误差
基本命令
限制
HyperLogLog 可以估计最多具有 18,446,744,073,709,551,616 (2^64) 个成员的集合的基数。
九、bitmaps(位图)
Redis 位图是字符串数据类型的扩展,可让您将字符串视为位向量。 还可以对一个或多个字符串执行按位运算。 位图用例的一些示例包括:
- 集合成员对应于整数 0-N 的情况的有效集合表示形式。
- 对象权限,其中每个位表示一个特定权限,类似于文件系统存储权限的方式。
基本命令
十、bitfields(位字段)
Redis位字段允许您设置、递增和获取任意位长度的整数值。例如,可以对从无符号1位整数到有符号63位整数的任何对象进行操作。
这些值使用二进制编码的Redis字符串存储。位字段支持原子读取、写入和增量操作,使其成为管理计数器和类似数值的好选择。
基本命令
- BITFIELD自动设置、递增和读取一个或多个值。
- BITFIELD_RO是BITFIELD的只读变体。