一、redis十大数据类型
1.1 类型说明
类型 | 说明 |
---|---|
String (字符串) | 最基本的数据类型,可以存储字符串、整数或浮点数 |
List (列表) | 一种有序的字符串列表,支持从两端插入和删除元素 |
Hash (哈希表) | 一种 key-value 存储结构,用于存储对象,类似于关联数组 |
Set (集合) | 一种无序的字符串集合,支持交集、并集和差集等集合操作 |
ZSet (有序集合) | 类似于 Set,但是每个元素都有一个分数,根据分数进行排序 |
GEO (地理位置) | 用于存储地理位置信息,支持查找附近的位置 |
HyperLogLog (基数统计) | 用于估计一个集合中不重复元素的个数,占用空间很小 |
Bitmap (位图) | 一种特殊的字符串类型,可以存储二进制位,支持按位操作 |
Bitfield (位域) | 用于对字符串中的位进行操作,支持多种操作类型 |
Stream (流) | 支持按时间顺序存储的数据结构,可以实现消息队列等功能 |
命令查找格式:help @数据类型
例:
#查找string相关命令
help @string
1.2 key操作
- keys *
#输出所有key
keys *
- exists参数1
#参数1:key
#判断该key是否存在,存在返回1,不存在返回0
exists key
#参数1也可以是多个key,返回的的是存在key的数量
exists key1 key2
- type 参数1
#参数1:key
#查看该key的类型
type key
- del 参数1
#参数1:key
#删除指定key数据
del key
#参数1可以是多个key,作批量删除
del key1 key2
-
unlink 参数1:使用和del无异,两者区别在于UNLINK 命令会将这些键标记为待删除,并异步地从内存中删除它们。如果某个键被其他客户端引用,那么它将在所有客户端都释放对它的引用之后,被异步地删除。
-
expire 参数1 参数2
#参数1:key
#参数2:秒数
#设置指定key经过10秒后过期
expire key 10
- ttl 参数1
#参数1:key
#查看指定key的过期时间,-1表示永不过期,-2表示已过期
ttl key
- move 参数1 参数2
#参数1:key
#参数2:dbindex[0-15]
#移动指定key到2号库
move key 2
- select 参数1
#参数1:dbindex[0-15]
#切换到1号库
select 1
- dbsize
#查看当前库key的数量
dbsize
- flushdb
#清空当前库
flushdb
- flushall
#清空所有库
flushall
注:命令不区分大小写
1.3 String(字符串)操作命令
GET 查询
格式:get 参数1
- 参数1:key名称
示例:文章来源地址https://www.toymoban.com/news/detail-435904.html
- 获取key为kk的value
get kk
SET 设置
格式:set 参数1 参数2 [参数3] [参数4] [参数5]
- 参数1:key名称
- 参数2:value
- 参数3:NX | XX
- 参数4:GET
- 参数5:EX seconds | PX milliseconds |
EXAT unix-time-seconds | PXAT unix-time-milliseconds | KEEPTTL
参数 | 解释 |
---|---|
NX | 仅当密钥尚不存在时才设置密钥 |
XX | 仅当密钥已存在时才设置密钥 |
GET | 返回存储在键的旧字符串,如果键不存在,则返回 nil。如果存储在键的值不是字符串,则会返回并中止错误 |
EX seconds | 设置指定的过期时间(以秒为单位) |
PX milliseconds | 设置指定的过期时间(以毫秒为单位) |
EXAT unix-time-seconds | 设置密钥过期的指定 Unix 时间(以秒为单位) |
PXAT unix-time-milliseconds | 设置密钥过期的指定 Unix 时间(以毫秒为单位) |
KEEPTTL | 保留与密钥关联的生存时间 |
示例:
- 设置k1的value为hello:
set k1 hello
- 如果k2存在直接返回nil,如果k2不存在,设置k2的value为hello:
set k2 hello NX
- 如果k3不存在直接返回nil,如果k3存在,设置k3的value为"hello":
set k3 hello XX
- 先返回k4原来的value再将k4的value修改为hello,如果k4不存在返回值为nil:
set k4 hello get
- 设置k5的value为hello,并在10秒后过期:
set k5 hello ex 10
- 设置k6的value为hello,并在500毫秒后过期:
set k6 hello px 500
- 设置k7的value为hello,并在到达时间戳1783219280秒过期:
set k7 hello exat 1783219280
- 设置k8的value为hello,并在到达时间戳1783219461238毫秒过期:
set k8 hello exat 1783219461238
- 设置k9的value为hello,并保留k9原先设定的过期时间:
set k9 hello keepttl
GETSET 查询后设置
格式:getset 参数1 参数2
- 参数1:key名称
- 参数2:内容
示例:
- 先返回k1原来的value,再将value设置为hello
getset k1 hello
SETEX 过期值设置
格式:setex 参数1 参数2 参数3
- 参数1:key名称
- 参数2:秒
- 参数3:内容
示例:
- 设置k1的值为hello并在10秒后过期
setex k1 10 hello
SETNX 冲突设置
格式:setnx 参数1 参数2
- 参数1:key名称
- 参数2:内容
示例:
- 如果k1不存在,设置k1的值为hello
setnx k1 hello
MGET 批量查询
格式:mget 参数1
- 参数1:key列表
示例:
- 获取k1、k2的value
mget k1 k2
MSET 批量设置
格式:MSET 参数1
- 参数1:键值对列表
示例:
- 设置k1的value为v1、k2的value为v2
mset k1 v1 k2 v2
MSETNX NX规则批量设置
格式:MSETNX 参数1
- 参数1:键值对列表
示例:
- 如果不存在k1、k2(需都成立),则设置k1的value为v1、k2的value为v2
msetnx k1 v1 k2 v2
GETRANGE 精准截取
格式:getrange 参数1 参数2 参数3
- 参数1:key名称
- 参数2:起始位置
- 参数3:终止位置
示例:
- 获取key的value,并返回value的0 - 5位置上的字符
getrange key 0 5
SETRANGE 精准设置
格式:setrange 参数1 参数2 参数3
- 参数1:key名称
- 参数2:起始位置
- 参数3:字符串
示例:
- 将hello设置到k1对应value的索引1位置
setrange k1 1 hello
INCR 自增查询
格式:incr 参数1
- 参数1:key名称
注:这里的key对应的value必须是数字整型
示例:
- 使k1的value自增1并返回自增后的值
incr k1
INCRBY 增加查询
格式:incrby 参数1 参数2
- 参数1:key名称
- 参数2:数字整型
注:这里的key对应的value必须是数字整型
示例:
- 使k1的value增加5并返回增加后的值
incrby k1 5
DECR 自减查询
格式:decr参数1
- 参数1:key名称
注:这里的key对应的value必须是数字整型
示例:
- 使k1的value自减1并返回自增后的值
decr k1
DECRBY 增加查询
格式:decrby 参数1 参数2
- 参数1:key名称
- 参数2:数字整型
注:这里的key对应的value必须是数字整型
示例:
- 使k1的value减少5并返回减少后的值
decrby k1 5
STRLEN 获取字符串长度
格式:strlen 参数1
- 参数1:key名称
- 获取k1的value字符串长度
strlen k1
APPEND 追加内容
格式:append 参数1 参数2
- 参数1:key名称
- 参数2:内容
- 将hello追加到k1的value后
append k1 hello
1.4 List(集合)操作命令
LPUSH 左端插入
格式:lpush 参数1 参数2
- 参数1:list名称
- 参数2:插入的数据,可以是多个用空格隔
示例:
- 在list1左端依次插入hello、world
lpush list1 hello world
RPUSH 右端插入
格式:rpush 参数1 参数2
- 参数1:list名称
- 参数2:插入的数据,可以是多个用空格分隔
示例:
- 在list1右端依次插入hello、world
rpush list1 hello world
LRANGE 检索列表
格式:lrange 参数1 参数2 参数3
- 参数1:list名称
- 参数2:起始索引
- 参数3:终止索引
示例:
- 检索list1索引0到3的数据
lrange list1 0 3
- 检索list2的所有数据
lrange list2 0 -1
LPOP 左端弹出
格式:lpop 参数1 [参数2]
- 参数1:list名称
- 参数2:数量
示例:
- 弹出list1左端第1条数据
lpop list1
- 弹出list1左端起3条数据
lpop list1 3
RPOP 右端弹出
格式:rpop 参数1 [参数2]
- 参数1:list名称
- 参数2:数量
示例:
- 弹出list1右端第1条数据
rpop list1
- 弹出list1左端起2条数据
rpop list1 2
LINDEX 检索指定索引数据
格式:lindex 参数1 参数2
- 参数1:list名称
- 参数2:索引
示例:
- 检索list1索引为5的数据
lindex list1 5
LLEN 检索数量
格式:llen 参数1
- 参数1:list名称
示例:
- 检索list1数据的条数
llen list1
LREM 删除值
格式:lrem 参数1 参数2 参数3
- 参数1:list名称
- 参数2:数量
- 参数3:指定值
示例:
- 在list1中删除5条值为hello的数据
lrem list1 5 hello
LTRIM 截取赋值
格式:ltrim 参数1 参数2 参数3
- 参数1:list名称
- 参数2:起始索引
- 参数3:终止索引
示例:
- 截取list1索引1到5的数据,将截取片段替换为list1的value
ltrim list1 1 5
RPOPLPUSH 弹出插入
格式:rpoplpush 参数1 参数2
- 参数1:list名称
- 参数2:list名称
示例:
- 将list1右端数据弹出,并将该数据压入list2的左端
rpoplpush list1 list2
LSET 修改
格式:lset 参数1 参数2 参数3
- 参数1:list名称
- 参数2:索引
- 参数3:值
示例:
- 将list1索引为0的值修改为hello
lset list1 0 hello
LINSERT 插入
格式:linsert 参数1 参数2 参数3 参数4
- 参数1:list名称
- 参数2:before | after
- 参数3:已有值
- 参数4:新值
示例:
- 在list1插入一个新值world位置在hello前面
linsert before hello world
- 在list2插入一个新值world位置在hello后面
linsert after hello world
1.5 Hash(哈希)操作命令
HSET 设置
格式:hset 参数1 参数2
- 参数1:hash名称
- 参数2:键值对
示例:
- 在user01中添加一个键值对key为id、value为1
hset user01 id 1
HGET 获取
格式:hget 参数1 参数2
- 参数1:hash名称
- 参数2:内部key
- 获取user01的id
hget user01 id
HMSET 批量设置
格式:hmset 参数1 参数2
- 参数1:hash名称
- 参数2:键值对(可以多个使用空格分隔)
示例:
- 在user01中添加一个id值为1、name值为zhangsan
hmset user01 id 1 name zhangsan
HMGET 批量获取
格式:hmget 参数1 参数2
- 参数1:hash名称
- 参数2:内部key(可以多个使用空格分隔)
示例:
- 获取user01的id和name
hmget user01 id name
HGETALL 获取所有
格式:hgetall 参数1
- 参数1:hash名称
示例:
- 获取user001的所有内容
hgetall user001
HLEN 获取长度
格式:hlen 参数1
- 参数1:hash名称
示例:
- 获取user001的键值对数量
hlen user001
HDEL 删除键值对
格式:hdel 参数1 参数2
- 参数1:hash名称
- 参数2:内部key
示例:
- 删除user001的name键值对
hdel user001 name
HEXISTS 存在检索
格式:hexists 参数1 参数2
- 参数1:hash名称
- 参数2:内部key
示例:
- 检索user001是否存在name键
hexists user001 name
HKEYS 获取所有键
格式:hkeys 参数1
- 参数1:hash名称
示例:
- 获取user001的所有key
hkeys user001
HVALS 获取所有值
格式:hkeys 参数1
- 参数1:hash名称
示例:
- 获取user001的所有value
hvals user001
HINCRBY 整数加法
格式:hincrby 参数1 参数2 参数3
- 参数1:hash名称
- 参数2:内部key
示例:
- 对user001中age的value增加1
hincrby user001 age 1
HINCRBYFLOAT 浮点数加法
格式:hincrbyfloat 参数1 参数2 参数3
- 参数1:hash名称
- 参数2:内部key
示例:
- 对user001中score的value增加0.5
hincrby user001 score 0.5
HSETNX NX规则设置
格式:hsetnx 参数1 参数2
- 参数1:hash名称
- 参数2:键值对
示例:
- 如果user01中不存在id,则添加一个键值对key为id、value为1
hsetnx user01 id 1
1.6 Set(集合)操作命令
SADD 添加元素
格式:sadd 参数1 参数2
- 参数1:set名称
- 参数2:元素(可以多个使用空格分隔)
示例:
- 将hello、world添加到set1
sadd set1 hello world
SMEMBERS 遍历
格式:smembers 参数1
- 参数1:set名称
示例:
- 遍历set1
smembers set1
SISMEMBER 存在判断
格式:sismember 参数1 参数2
- 参数1:set名称
- 参数2:元素
示例:
- 判断hello是否存在于set1
sismember set hello
SREM 删除
格式:srem 参数1 参数2
- 参数1:set名称
- 参数2:元素
示例:
- 在set1中删除hello
srem set1 hello
SCARD 检索元素个数
格式:scard 参数1
- 参数1:set名称
示例:
- 检索set1中元素个数
scard set1
SRANDMEMBER 随机展示
格式:srandmember 参数1 参数2
- 参数1:set名称
- 参数2:数量
示例:
- 在set1随机展示2个元素
srandmemeber set1 2
SPOP 随机弹出
格式:spop 参数1 参数2
- 参数1:set名称
- 参数2:数量
示例:
- 在set1 随机弹出2个元素
spop set1 2
注:spop与srandmember区别在于spop会将元素删除
SMOVE 元素移动
格式:smove 参数1 参数2 参数3
- 参数1:数据源set名称
- 参数2:接收set名称
- 参数3:元素
示例:
- 将set1中的hello移动到set2
smove set1 set2 hello
SDIFF 差集
格式:sdiff 参数1 参数2
-
参数1:被差运算set
-
参数2:差运算set(可以多个用空格分隔)
示例:
- 检索在set1和set2中set1独有的元素
sdiff set1 set2
SUNION 并集
格式:sunion 参数1 参数2
-
参数1:set名称
-
参数2:set名称(可以多个用空格分隔)
示例:
- 检索set1、set2合并后的集合
sunion set1 set2
SINTER 交集
格式:sinter 参数1 参数2
-
参数1:set名称
-
参数2:set名称(可以多个用空格分隔)
示例:
- 检索set1和set2共有的元素,返回结果集
sinter set1 set2
SINTERCARD 交集(redis7新命令)
格式:sintercard 参数1 参数2 参数3
-
参数1:参与的set数量
-
参数2:参与的set名称(每个用空格分隔)
-
参数3:limit限制
示例:
- 检索set1和set2共有的元素,返回数量
sintercard 2 set1 set2
- 检索set1和set2共有的元素,返回数量,且数量作最大限制为10
sintercard 2 set1 set2 limit 10
1.7 Zset(有序集合)操作命令
ZADD 添加
格式:zadd 参数1 参数2 参数3
- 参数1:zset名称
- 参数2:zset元素(score value)(可以多个使用空格分隔)
示例:
- 在zset1添加一个元素score为60、value为hello
zadd zset1 60 hello
ZRANGE 遍历
格式:zrange 参数1 参数2 参数3 [参数4]
- 参数1:zset名称
- 参数2:起始索引
- 参数3:终止索引
- 参数4:withscores
示例:
- 遍历zset1所有元素
zrange zset1 0 -1
- 附带分数遍历zset2所有元素
zrange zset2 0 -1 withscores
ZREVRANGE 反转遍历
格式:zrecrange 参数1 参数2 参数3 [参数4]
- 参数1:zset名称
- 参数2:起始索引
- 参数3:终止索引
- 参数4:withscores
示例:
- 反转遍历zset1所有元素
zrevrange zset1 0 -1
- 附带分数反转遍历zset2所有元素
zrevrange zset2 0 -1 withscores
ZRANGEBYSCORE 分数范围选取
格式:zrangebyscore 参数1 参数2 参数3 参数4 参数5
- 参数1:zset名称
- 参数2:最低分
- 参数3:最高分
- 参数4:withscores
- 参数5:limit 起始索引 步长
示例:
- 检索zset1中60到100分的元素
zrangebyscore zset1 60 90 withscores
- 附带分数检索zset1中60到100分的元素
zrangebyscore zset1 60 90 withscores
- 检索zset1中60到100分的元素,限制从0开始步长为2
zrangebyscore zset1 60 90 limit 0 2
ZSCORE 检索分数
格式:zscore 参数1 参数2
- 参数1:zset名称
- 参数2:元素
示例:
- 检索zset1中v1元素的分数
zscore zset1 v1
ZCARD
格式:zcard 参数1
- 参数1:zset名称
示例:
- 检索zset1元素个数
zcard zset1
ZREM 删除
格式:zrem 参数1 参数2
- 参数1:zset名称
- 参数2:元素(可以多个使用空格分隔)
示例:
- 删除zset1中v1、v2元素
zrem zset1 v1 v2
ZINCRBY 增加分数
格式:zincrby 参数1 参数2 参数3
- 参数1:zset名称
- 参数2:分数
- 参数3:元素
示例:
- 将zset1中的v1元素的分数增加5分
zincrby zset1 5 v1
ZCOUNT 检索指定分数范围中的元素个数
格式:zcount 参数1 参数2 参数3
- 参数1:zset名称
- 参数2:最低分
- 参数3:最高分
示例:
- 检索zset1中60到100分的元素个数
zcount zset1 60 100
ZMPOP 弹出
格式:zmpop 参数1 参数2 参数3 参数4
- 参数1:数量(zset数量)
- 参数2:zset名称(使用空格分隔)
- 参数3:max | min
- 参数4:数量(弹出数量)
示例:
- 从zset1、zset2中弹出2个最小的元素
zmpop 2 zset1 zset2 min 2
ZRANK 检索索引
格式:zrank 参数1 参数2
- 参数1:zset名称
- 参数2:元素
示例:
- 检索zset1中v1的索引号
zrank zset1 v1
ZREVRANK 检索反转索引
格式:zrevrank 参数1 参数2
- 参数1:zset名称
- 参数2:元素
示例:
- 反转检索zset1中v1的索引号
zrevrank zset1 v1
1.8 bitmap(位图)操作命令
SETBIT 设置
格式:setbit 参数1 参数2 参数3
- 参数1:bitmap名称
- 参数2:索引
- 参数3:值( 1 | 0 )
示例:
- 将bitmap1的第一个位置的值设为1
setbit bitmap1 1 1
GETBIT 检索
格式:getbit 参数1 参数2
- 参数1:bitmap名称
- 参数2:索引
示例:
- 检索bitmap1索引为2的值
getbit bitmap1 2
STRLEN 统计字节数
格式:strlen 参数1
- 参数1:bitmap名称
示例:
- 统计bitmap1占用的字节数(每8位占1字节)
strlen bitmap1
BITCOUNT 统计1
格式:bitcount参数1 [参数2]
- 参数1:bitmap名称
- 参数2:范围(起始字节 终止字节)
示例:
- 统计bitmap1值为1的数量
bitcount bitmap1
- 统计bitmap1中0到1字节范围内值为1的数量
bitcount bitmap1 0 1
BITOP 位运算
格式:bittop 参数1 参数2 参数3
- 参数1:AND(与) | OR(或) | XOR(异或) | NOT(非)
- 参数2:存放的bitmap
- 参数3:参与运算的bitmap(空格分隔)
示例:
- 将bitmap1和bitmap2进行与运算并将结果存放在newbitmap
bitop and newbitmap bitmap1 bitmap2
- 将bitmap3进行非运算并将结果存放在newbitmap(非运算只能有一个bitmap)
bitop not newbitmap bitmap1
1.9 HyperLogLog(基数统计)操作命令
PFADD 添加
格式:pfadd 参数1 参数2
- 参数1:hyperLogLog名称
- 参数2:元素(可以多个,使用空格分隔)
示例:
- 将zs、ls添加到k1中
pfadd k1 zs ls
PFCOUNT 统计
格式:pfcount 参数1
- 参数1:hyperLogLog名称(可以多个,使用空格分隔)
示例:
- 统计k1、k2中的基数个数
pfcount k1 k2
PFMERGE 合并
格式:pfmerge 参数1 参数2
- 参数1:接收结果hyperLogLog名称
- 参数2:hyperLogLog名称(使用空格分隔)
示例:
- 将k1、k2、k3合并到newkey中
pfmerge newkey k1 k2 k3
1.10 GEO(地理空间)操作命令
GEOADD 添加
格式:geo 参数1 参数2 参数3
- 参数1:geo名称
- 参数2:经度
- 参数3:纬度
- 参数4:描述
示例:
- 在city里面添加天安门、故宫的经纬度坐标
GEOADD city 116.403963 39.915119 "天安门" 116.403414 39.924091 "故宫"
GEOPOS 返回经纬度
格式:geopos 参数1 参数2 参数3
- 参数1:geo名称
- 参数2:描述(可以多个,使用空格分隔)
示例:
- 返回故宫、天安门的经纬度
geopos city "故宫" "天安门"
GEOHASH hash表示返回经纬度
格式:geohash参数1
- 参数1:geo名称
- 参数2:描述(可以多个,使用空格分隔)
示例:
- hash表示返回故宫、天安门的经纬度
geohash city "故宫" "天安门"
GEODIST 距离计算
格式:geodist 参数1 参数2 参数3
- 参数1:geo名称
- 参数2:描述1
- 参数3:描述2
- 参数3:单位( M | KM | FT | MI )
示例:
- 计算天安门和故宫相距多少KM
geodist city "天安门" "故宫" KM
GEORADIUS 半径查找
格式:georadius 参数1 参数2 参数3 参数4 [参数5] [参数6] [参数7] [参数8] [参数9]
- 参数1:geo名称
- 参数2:经度
- 参数3:维度
- 参数4:距离
- 参数5:withcoord(返回坐标)
- 参数6:withdist(返回距离信息)
- 参数7:排序( ASC | DESC )
- 参数8:最大返回数(count 数量)
- 参数9:withhash(返回hash值)
示例:
- 返回city中距离(116.403963,39.915119)坐标10km之内的元素并正序排序,最大限度不超过10条,同时返回坐标、距离信息、哈希值
georadius city 116.403963 39.915119 60km withcoord withdist asc count 10 withhash
GEORADIUSBYMEMBER
格式:georadiusbymember 参数1 参数2 参数3 [参数4] [参数5] [参数6] [参数7]
- 参数1:geo名称
- 参数2:描述
- 参数3:距离
- 参数4:withcoord(返回坐标)
- 参数5:withdist(返回距离信息)
- 参数6:排序( ASC | DESC )
- 参数7:最大返回数(count 数量)
- 参数8:withhash(返回hash值)
示例:
- 返回city中距离天安门10km之内的元素并正序排序,最大限度不超过10条,同时返回坐标、距离信息、哈希值
georadius city 天安门 60km withcoord withdist asc count 10 withhash
1.11 Stream(流)操作命令
1.11.1 队列相关命令
XADD 添加
格式:cadd 参数1 参数2 参数3
- 参数1:队列名称
- 参数2:消息ID
- 参数3:键值对参数(可以多个,使用空格分隔)
示例:
- 在stream1添加键值对(name:zs)、(age:18),消息ID自动生成
xadd stream1 * name zs age 18
XTRIM 截取
格式:xtrim 参数1 参数2 参数3
- 参数1:队列名称
- 参数2:maxlen | minid
- 参数3:根据参数2变化( maxlen 允许的最大长度 | minid 允许最小id )
示例:
- 将mystream中超过阈值2的消息进行修剪
xtrim mystream maxlen 2
- 将mystream中小于1683373939844-0的消息进行修剪
xtrim mystream minid 1683373939844-0
XDEL 删除
格式:cdel 参数1 参数2
- 参数1:队列名称
- 参数2:消息ID(可以多个,使用空格分隔)
示例:
- 删除mystream中消息id为 1683373679898-0 的消息
xdel mystream 1683373679898-0
XLEN 统计
格式:xlen 参数1
- 参数1:队列名称
示例:
- 统计mystream中的消息数
xlen mystream
XRANGE 获取
格式:xrange 参数1 参数2 参数3
- 参数1:队列名称
- 参数2:范围(max -> min)
- 参数3:最大展示数量
示例:
- 获取最小值到最大值中最多5条消息
xrange stream - + count 1
XREVRANGE 反转获取
格式:xrevrange 参数1 参数2 参数3
- 参数1:队列名称
- 参数2:范围(min -> max)
- 参数3:最大展示数量
示例:
- 获取最大值到最小值中最多5条消息
xrevrange stream + - count 1
XREAD 消息读取
格式:xread [参数1] [参数2] streams 参数3 参数4
- 参数1:数量
- 参数2:BLOCK (BLOCK以阻塞方式读取消息)
- 参数3:队列名称
- 参数4:返回范围
示例:
- 在mystream中从头开始读取两条数据
xread count 2 streams mystream 0-0
- 以阻塞方式在mystream中读取一条新数据
xread count 1 block 0 streams mystream $
1.11.2 消费组相关指令
XGROUP CREATE 创建消费者组
格式:xgroup create 参数1 参数2 参数3
- 参数1:队列名称
- 参数2:分组名称
- 参数3:$ | 0 ($从尾部开始消费,0从头部开始消费)
示例:
- 基于mystream创建一个分组groupA,规则从尾部开始消费
xgroup create mystream groupA $
XREADGROUP GROUP
格式:xreadgroup group 参数1 参数2 streams 参数3 参数4
- 参数1:消费组名称
- 参数2:消费组名称
- 参数3:数量
- 参数4:队列名称
- 参数5:读取消息的起始位置
示例:
- 在groupA创建一个消费者consumer1从 Stream 的最新位置开始读取读取mystream的2条消息
xreadgroup group groupA consumer1 count 2 streams mystream >
XACK 确认
格式:xack 参数1 参数2 参数3
- 参数1:队列名称
- 参数2:分组消息
- 参数3:消息ID
示例:
- 确认一条mystream中groupA的消息,消息ID为1683375790000-0
xack mystream groupA 1683375790000-0
XPENDING 查询读取
格式:xpending 参数1 参数2 [参数3] [参数4]
- 参数1:队列名称
- 参数2:消费组名
- 参数3:范围
- 参数4:消费者名称
示例:
- 查询mystream中groupA分组在整个消息队列中已读取未确认的消息最大不超过10条
xpending mystream groupA - + 10
- 查询mystream中groupA分组的消费者consumer1已读取未确认的消息,范围是整个消息队列最大不超过10条
xpending mystream groupD - + 10 consumer1
XINFO
格式:xinfo stream 参数1
- 参数1:队列名称
示例:
- 打印mystream的stream、消费组、消费用户信息
xinfo stream mystream
1.11.3 特殊符号
-
-
:最小可能出现的id; -
+
:最大可能出现的id; -
$
:表示只消费新的消息,当前流中最大的 id,可用于将要到来的信息; -
>
:用于XREADGROUP命令,表示迄今还没有发送给组中使用者的信息,会更新消费者组的最后ID; -
*
:用于XADD命令中,让系统自动生成 id;
1.12 bitdield(位域)操作命令
BITFIELD GET 获取
格式:bitfield 参数1 get 参数2 参数3
- 参数1:字符串变量
- 参数2:类型( i | u )
- 参数3:位数
示例:
- 返回strTemp的17位开始获取偏移8位的数据的有符号整型量
bitfield strTemp get i8 16
BITFIELD SET 设置
格式:bitfield 参数1 set 参数2 参数3
- 参数1:字符串变量
- 参数2:类型( i | u )
- 参数3:位数
- 参数4:替换量
示例:
- 从strTemp的第9位开始将接下来的8位替换为120(字母x)
bitfield strTemp set i8 8 120
BITFIELD INCRBY 增加
格式:bitfield 参数1 incrby 参数2 参数3
- 参数1:字符串变量
- 参数2:类型( i | u )
- 参数3:位数
- 参数4:增加量
示例:
- 对strTemp的第3个位开始,对接下来的4位无符号数加1
bitfield strTemp incrby u4 2 1
BITFIELD OVERFLOW 溢出控制
格式:bitfield 参数1 overflow 参数2 参数3 参数4 参数5
- 参数1:字符串变量
- 参数2:溢出控制选项( warp | sat | dail )
- 参数3:操作
- 参数4:类型( i | u )
- 参数5:位数
- 参数6:增加量
溢出控制选项名词解释:文章来源:https://www.toymoban.com/news/detail-435904.html
WRAP
:当位值溢出时,将自动从另一端开始重新计数,相当于将位值视为循环的。SAT
:当位值溢出时,将自动截断为最大或最小的可表示值。FAIL
:当位值溢出时,命令将返回一个错误。
示例:
- 对strTemp的第3个位开始,对接下来的4位无符号数加888,溢出控制设置为sat
bitfield strTemp overflow sat incrby u4 2 888
到了这里,关于redis十大数据类型的说明和常用命令的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!