Redis 是一个数据结构服务器。 Redis 的核心是提供一系列本机数据类型,可帮助您解决从缓存到队列再到事件处理的各种问题
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 哈希是结构化为字段值对集合的记录类型。 您可以使用哈希来表示基本对象和存储计数器分组等。
基本命令
- HSET 在哈希上设置一个或多个字段的值。
- HGET 返回给定字段的值。
- HMGET 返回一个或多个给定字段的值。
- HINCRBY 将给定字段的值按提供的整数递增。
限制
每个哈希最多可以存储 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 流支持多种修剪策略(以防止流无限增长)和多个消费策略
基本命令
- XADD 向流添加新条目。
- XREAD读取一个或多个条目,从给定位置开始并及时向前移动。
- XRANGE 返回两个提供的条目 ID 之间的条目范围。
- XLEN 返回流的长度。
七、geospatial(Redis地理空间)
Redis 地理空间索引允许您存储坐标并搜索它们。 此数据结构可用于查找给定半径或边界框内的邻近点。
基本命令
- GEOADD 将位置添加到给定的地理空间索引(请注意,使用此命令,经度位于纬度之前)。
- GEOSEARCH 返回具有给定半径或边界框的位置。
八、HyperLogLog(Redis超级日志)
HyperLogLog 是一种估计集合基数的数据结构。作为一种概率数据结构,HyperLogLog 以完美的精度换取高效的空间利用率。
Redis HyperLogLog 实现最多使用 12 KB,并提供 0.81% 的标准误差
基本命令
- PFADD 将项目添加到 HyperLogLog。
- PFCOUNT 返回集合中项数的估计值。
- PFMERGE将两个或多个HyperLogLogs合并为一个。
限制
HyperLogLog 可以估计最多具有 18,446,744,073,709,551,616 (2^64) 个成员的集合的基数。
九、bitmaps(位图)
Redis 位图是字符串数据类型的扩展,可让您将字符串视为位向量。 还可以对一个或多个字符串执行按位运算。 位图用例的一些示例包括:
- 集合成员对应于整数 0-N 的情况的有效集合表示形式。
- 对象权限,其中每个位表示一个特定权限,类似于文件系统存储权限的方式。
基本命令
- SETBIT 将提供的偏移量处的位设置为 0 或 1。
- GETBIT 返回给定偏移量的位值。
- BITOP 允许您对一个或多个字符串执行按位运算。
十、bitfields(位字段)
Redis位字段允许您设置、递增和获取任意位长度的整数值。例如,可以对从无符号1位整数到有符号63位整数的任何对象进行操作。
这些值使用二进制编码的Redis字符串存储。位字段支持原子读取、写入和增量操作,使其成为管理计数器和类似数值的好选择。
基本命令
- BITFIELD自动设置、递增和读取一个或多个值。
- BITFIELD_RO是BITFIELD的只读变体。
文章下方有交流学习区!一起学习进步!也可以前往官网,加入官方微信交流群!!!你的支持和鼓励是我创作的动力❗❗❗
Doker的成长,欢迎大家一起陪伴!!!
官网:Doker 多克; 官方旗舰店:首页-Doker 多克 多克创新科技企业店-淘宝网全品优惠