redis数据对象(初识)
字符串
可以是字符串(包括 XML JSON),还有数字(整形 浮点数),二进制(图片 音频 视频),最大不能超过 512MB
String 二进制存储,redis 对于 KV 的操作效率很高,可以直接用作计数器,应用场景主要是做计数器,例如:统计在线人数,存储图片视频等
# 设置指定键(key)的值(value)
SET key value
# 获取指定键的值
GET key
# 如果键已经存在且值为字符串,APPEND会将指定的 value 追加到原来值的末尾;如果键不存在,APPEND会先创建该键, 并将 value 设置为其值,等同于SET命令。
APPEND key value
# 获取指定键对应字符串值的长度,如果键不存在,返回0。
STRLEN key
# 删除键
DEL key
哈希hash
哈希 hash 是一个 string 类型的 field 和 value 的映射表,hash 适合用于存储对象,每个 hash 可以存储 2³² - 1 键值对(大概 40 多亿)
散列类型(hash)存放键值对,一般可以用来存某个对象的基本属性信息,应用场景主要是用来储对象,例如:用户信息,商品信息,社交网络,点赞、踩、关注 / 被关注
# 删除哈希表(hash)中一个或多个指定的字段(field)。其中key是哈希表的键,field是要删除的哈希表字段,并且可以一次性指定多个字段,字段之间用空格分隔。
HDEL key field [field ...]
# 设置哈希表中字段的值,如果字段不存在,会创建一个新的字段并赋值;如果字段已存在,会覆盖该字段原来的值。
单个字段设置:HSET key field value
多个字段设置:HSET key field1 value1 field2 value2 ...
# 获取哈希表中指定字段的值。其中key是哈希表的键,field是要获取值的字段。
HGET key field
# 获取哈希表中字段的数量。,其中key是哈希表的键。
HLEN key
列表
用来存储多个有序的字符串,一个列表最多可存 2 的 32 次方减 1 个元素,因为有序,可以通过索引下标获取元素或某个范围内元素列表,列表元素可以重复。
列表类型(list)应用场景主要是用来实现消息队列(安全队列),例如:实现消息队列,对标 Kafka,分页查询,社交网络,点赞、踩、关注 / 被关注
# 将一个或多个值插入到列表(List)的尾部(最右边)。如果列表不存在,会创建一个新的列表并插入值;如果列表已存在,则将值依次追加到列表尾部。
# 其中key是列表的键,value是要插入到列表的值,可以同时插入多个值 ,值与值之间用空格隔开。
RPUSH key value [value ...]
# 移除并返回列表的头元素(最左边的元素)。如果列表为空,返回(nil) 。其中key是列表的键。
LPOP key
# 在列表的元素前或后插入新元素。
# key:列表的键。
# BEFORE|AFTER:指定是在某个元素(pivot)之前(BEFORE)还是之后(AFTER)插入新元素。
# pivot:列表中已有的元素,作为插入参考。
# value:要插入的新元素。
LINSERT key BEFORE|AFTER pivot value
# 获取列表的长度,即列表中元素的数量。如果列表不存在,返回0 。其中key是列表的键。
LLEN key
无序集合
是 String 类型的无序集合,集合成员是唯一的不能出现重复的数据。集合中最大的成员数为 2³² - 1 (4294967295, 每个集合可存储 40 多亿个成员)。
除了支持增删改查,还支持集合交集、并集、差集;
整数的有序列表可以直接使用 set,应用场景:去重,用户名 / 身份证不能重复,联表查询,多个元素的共同点
# 向集合(Set)中添加一个或多个成员。如果成员已存在于集合中,则忽略该成员;如果集合不存在,则创建一个新集合并添加成员。
# 其中key是集合的键,member是要添加到集合的成员,可以同时添加多个成员,成员之间用空格分隔。
SADD key member [member ...]
# 随机移除并返回集合中的一个成员。如果集合为空,返回(nil)。
# 其中key是集合的键,count是可选参数(Redis 3.2.0+ 支持),用于指定要移除并返回的成员数量,默认值为1。
SPOP key [count]
# 返回多个集合的交集,即同时存在于所有给定集合中的成员。
# 其中key是集合的键,可以指定多个集合,键之间用空格分隔。
SINTER key [key ...]
# 返回集合中的成员数量(即集合的基数)。如果集合不存在,返回0。其中key是集合的键。
SCARD key。
有序集合
有序集合和无序集合一样也是 string 类型元素的集合,且不允许重复的成员,不同的是每个元素都会关联一个 double 类型的分数,redis 正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数 (score) 却可以重复;
有序集合集合类型(sorted_set),可以使用范围查找,应用场景主要是:排行榜,top 列表
# 向有序集合(Sorted Set)中添加一个或多个成员,或者更新已存在成员的分数。有序集合中的每个成员都关联一个分数(score),Redis 会根据分数对成员进行从小到大排序。如果成员已存在,新的分数将覆盖旧分数;如果有序集合不存在,则创建一个新的有序集合。
# key:有序集合的键。
# NX:只添加不存在的成员,不更新已存在成员。
# XX:只更新已存在的成员,不添加新成员。
# CH:返回被修改的成员数量(包括添加和更新的成员)。
# INCR:将分数视为增量,对已存在成员的分数进行增量操作(此时只能指定一个成员)。
# score:成员的分数,可以是整数或双精度浮点数。
# member:要添加或更新的成员。
ZADD key [NX|XX] [CH] [INCR] score member [score member ...]
# 迭代有序集合中的元素(包括成员和分数)。适用于处理元素数量较多的有序集合,避免一次性返回大量数据导致阻塞。
# key:有序集合的键。
# cursor:迭代游标,初始值为0,后续迭代使用上一次返回的新游标。
# MATCH pattern(可选):只返回匹配该模式的成员。
# COUNT count(可选):每次迭代返回的元素数量估计值(默认值为10)。
ZSCAN key cursor [MATCH pattern] [COUNT count]
# 返回有序集合中指定索引范围内的成员。成员按分数从小到大排序(如果需要从大到小排序,可使用ZREVRANGE命令)。
# key:有序集合的键。
# start:起始索引(从0开始,表示第一个成员),可以为负数(-1表示最后一个成员)。
# stop:结束索引,可以为负数。
# WITHSCORES(可选):如果指定,则返回结果中包含成员的分数。
RANGE key start stop [WITHSCORES]
# 返回有序集合中指定成员的分数。
# key:有序集合的键。
# member:要查询分数的成员。
ZSCORE key member
Stream流
Stream 是在 Redis5.0 以上新增加的一种新的数据结构,它是一个支持多播的可持久化消息队列。
Stream 的结构是一个链表,将所有的消息都串起来,每个消息都有一个唯一的 ID 和对应的内容。
Stream 除了拥有很高的性能和内存利用率外,它最大的特点就是提供了消息的持久化存储。以及主从复制功能,从而解决了网络断开、Redis 宕机情况下,消息丢失的问题,即便是重启 Redis,存储的内容也会存在。
消息队列(Stream),是一个消息队列,应用场景主要是消息发布 / 订阅。
# 向 Stream 中添加一个消息(message),每个消息由一个全局唯一 ID和键值对(field-value)组成。
# key:Stream 的名称。
# MAXLEN [~] count(可选):限制 Stream 的最大长度,超过时自动删除旧消息。~表示近似删除,提高性能。
# *:自动生成全局唯一 ID(格式:时间戳-序列号)。
# id:手动指定 ID(需遵循时间戳-序列号格式,且必须大于当前最大 ID)。
# field value:消息内容,可包含多个键值对。
XADD key [MAXLEN [~] count] *|id field value [field value ...]
# 获取 Stream 中指定 ID 范围的消息。
# key:Stream 的名称。
# start和end:ID 范围,使用-表示最小 ID,+表示最大 ID。
# COUNT count(可选):限制返回的消息数量,用于分页。
XRANGE key start end [COUNT count]

浙公网安备 33010602011771号