redis十大数据类型的说明和常用命令

这篇具有很好参考价值的文章主要介绍了redis十大数据类型的说明和常用命令。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、redis十大数据类型

1.1 类型说明

表1.1 十大数据类型
类型 说明
String (字符串) 最基本的数据类型,可以存储字符串、整数或浮点数
List (列表) 一种有序的字符串列表,支持从两端插入和删除元素
Hash (哈希表) 一种 key-value 存储结构,用于存储对象,类似于关联数组
Set (集合) 一种无序的字符串集合,支持交集、并集和差集等集合操作
ZSet (有序集合) 类似于 Set,但是每个元素都有一个分数,根据分数进行排序
GEO (地理位置) 用于存储地理位置信息,支持查找附近的位置
HyperLogLog (基数统计) 用于估计一个集合中不重复元素的个数,占用空间很小
Bitmap (位图) 一种特殊的字符串类型,可以存储二进制位,支持按位操作
Bitfield (位域) 用于对字符串中的位进行操作,支持多种操作类型
Stream (流) 支持按时间顺序存储的数据结构,可以实现消息队列等功能

命令查找格式:help @数据类型

例:

#查找string相关命令
help @string

1.2 key操作

  1. keys *
#输出所有key
keys *
  1. exists参数1
#参数1:key
#判断该key是否存在,存在返回1,不存在返回0
exists key
#参数1也可以是多个key,返回的的是存在key的数量
exists key1 key2
  1. type 参数1
#参数1:key
#查看该key的类型
type key
  1. del 参数1
#参数1:key
#删除指定key数据
del key
#参数1可以是多个key,作批量删除
del key1 key2
  1. unlink 参数1:使用和del无异,两者区别在于UNLINK 命令会将这些键标记为待删除,并异步地从内存中删除它们。如果某个键被其他客户端引用,那么它将在所有客户端都释放对它的引用之后,被异步地删除。

  2. expire 参数1 参数2

#参数1:key
#参数2:秒数
#设置指定key经过10秒后过期
expire key 10
  1. ttl 参数1
#参数1:key
#查看指定key的过期时间,-1表示永不过期,-2表示已过期
ttl key
  1. move 参数1 参数2
#参数1:key
#参数2:dbindex[0-15]
#移动指定key到2号库
move key 2
  1. select 参数1
#参数1:dbindex[0-15]
#切换到1号库
select 1
  1. dbsize
#查看当前库key的数量
dbsize
  1. flushdb
#清空当前库
flushdb
  1. flushall
#清空所有库
flushall

注:命令不区分大小写

1.3 String(字符串)操作命令

GET 查询

格式:get 参数1

  • 参数1:key名称

示例:文章来源地址https://www.toymoban.com/news/detail-435904.html

  1. 获取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
表1.3.1 参数说明表
参数 解释
NX 仅当密钥尚不存在时才设置密钥
XX 仅当密钥已存在时才设置密钥
GET 返回存储在键的旧字符串,如果键不存在,则返回 nil。如果存储在键的值不是字符串,则会返回并中止错误
EX seconds 设置指定的过期时间(以秒为单位)
PX milliseconds 设置指定的过期时间(以毫秒为单位)
EXAT unix-time-seconds 设置密钥过期的指定 Unix 时间(以秒为单位)
PXAT unix-time-milliseconds 设置密钥过期的指定 Unix 时间(以毫秒为单位)
KEEPTTL 保留与密钥关联的生存时间

示例:

  1. 设置k1的value为hello:
set k1 hello
  1. 如果k2存在直接返回nil,如果k2不存在,设置k2的value为hello:
set k2 hello NX
  1. 如果k3不存在直接返回nil,如果k3存在,设置k3的value为"hello":
set k3 hello XX
  1. 先返回k4原来的value再将k4的value修改为hello,如果k4不存在返回值为nil:
set k4 hello get
  1. 设置k5的value为hello,并在10秒后过期:
set k5 hello ex 10
  1. 设置k6的value为hello,并在500毫秒后过期:
set k6 hello px 500
  1. 设置k7的value为hello,并在到达时间戳1783219280秒过期:
set k7 hello exat 1783219280
  1. 设置k8的value为hello,并在到达时间戳1783219461238毫秒过期:
set k8 hello exat 1783219461238
  1. 设置k9的value为hello,并保留k9原先设定的过期时间:
set k9 hello keepttl

GETSET 查询后设置

格式:getset 参数1 参数2

  • 参数1:key名称
  • 参数2:内容

示例:

  1. 先返回k1原来的value,再将value设置为hello
getset k1 hello

SETEX 过期值设置

格式:setex 参数1 参数2 参数3

  • 参数1:key名称
  • 参数2:秒
  • 参数3:内容

示例:

  1. 设置k1的值为hello并在10秒后过期
setex k1 10 hello

SETNX 冲突设置

格式:setnx 参数1 参数2

  • 参数1:key名称
  • 参数2:内容

示例:

  1. 如果k1不存在,设置k1的值为hello
setnx k1 hello

MGET 批量查询

格式:mget 参数1

  • 参数1:key列表

示例:

  1. 获取k1、k2的value
mget k1 k2

MSET 批量设置

格式:MSET 参数1

  • 参数1:键值对列表

示例:

  1. 设置k1的value为v1、k2的value为v2
mset k1 v1 k2 v2

MSETNX NX规则批量设置

格式:MSETNX 参数1

  • 参数1:键值对列表

示例:

  1. 如果不存在k1、k2(需都成立),则设置k1的value为v1、k2的value为v2
msetnx k1 v1 k2 v2

GETRANGE 精准截取

格式:getrange 参数1 参数2 参数3

  • 参数1:key名称
  • 参数2:起始位置
  • 参数3:终止位置

示例:

  1. 获取key的value,并返回value的0 - 5位置上的字符
getrange key 0 5

SETRANGE 精准设置

格式:setrange 参数1 参数2 参数3

  • 参数1:key名称
  • 参数2:起始位置
  • 参数3:字符串

示例:

  1. 将hello设置到k1对应value的索引1位置
setrange k1 1 hello

INCR 自增查询

格式:incr 参数1

  • 参数1:key名称

注:这里的key对应的value必须是数字整型

示例:

  1. 使k1的value自增1并返回自增后的值
incr k1

INCRBY 增加查询

格式:incrby 参数1 参数2

  • 参数1:key名称
  • 参数2:数字整型

注:这里的key对应的value必须是数字整型

示例:

  1. 使k1的value增加5并返回增加后的值
incrby k1 5

DECR 自减查询

格式:decr参数1

  • 参数1:key名称

注:这里的key对应的value必须是数字整型

示例:

  1. 使k1的value自减1并返回自增后的值
decr k1

DECRBY 增加查询

格式:decrby 参数1 参数2

  • 参数1:key名称
  • 参数2:数字整型

注:这里的key对应的value必须是数字整型

示例:

  1. 使k1的value减少5并返回减少后的值
decrby k1 5

STRLEN 获取字符串长度

格式:strlen 参数1

  • 参数1:key名称
  1. 获取k1的value字符串长度
strlen k1

APPEND 追加内容

格式:append 参数1 参数2

  • 参数1:key名称
  • 参数2:内容
  1. 将hello追加到k1的value后
append k1 hello

1.4 List(集合)操作命令

LPUSH 左端插入

格式:lpush 参数1 参数2

  • 参数1:list名称
  • 参数2:插入的数据,可以是多个用空格隔

示例:

  1. 在list1左端依次插入hello、world
lpush list1 hello world

RPUSH 右端插入

格式:rpush 参数1 参数2

  • 参数1:list名称
  • 参数2:插入的数据,可以是多个用空格分隔

示例:

  1. 在list1右端依次插入hello、world
rpush list1 hello world

LRANGE 检索列表

格式:lrange 参数1 参数2 参数3

  • 参数1:list名称
  • 参数2:起始索引
  • 参数3:终止索引

示例:

  1. 检索list1索引0到3的数据
lrange list1 0 3
  1. 检索list2的所有数据
lrange list2 0 -1

LPOP 左端弹出

格式:lpop 参数1 [参数2]

  • 参数1:list名称
  • 参数2:数量

示例:

  1. 弹出list1左端第1条数据
lpop list1
  1. 弹出list1左端起3条数据
lpop list1 3

RPOP 右端弹出

格式:rpop 参数1 [参数2]

  • 参数1:list名称
  • 参数2:数量

示例:

  1. 弹出list1右端第1条数据
rpop list1
  1. 弹出list1左端起2条数据
rpop list1 2

LINDEX 检索指定索引数据

格式:lindex 参数1 参数2

  • 参数1:list名称
  • 参数2:索引

示例:

  1. 检索list1索引为5的数据
lindex list1 5

LLEN 检索数量

格式:llen 参数1

  • 参数1:list名称

示例:

  1. 检索list1数据的条数
llen list1

LREM 删除值

格式:lrem 参数1 参数2 参数3

  • 参数1:list名称
  • 参数2:数量
  • 参数3:指定值

示例:

  1. 在list1中删除5条值为hello的数据
lrem list1 5 hello

LTRIM 截取赋值

格式:ltrim 参数1 参数2 参数3

  • 参数1:list名称
  • 参数2:起始索引
  • 参数3:终止索引

示例:

  1. 截取list1索引1到5的数据,将截取片段替换为list1的value
ltrim list1 1 5

RPOPLPUSH 弹出插入

格式:rpoplpush 参数1 参数2

  • 参数1:list名称
  • 参数2:list名称

示例:

  1. 将list1右端数据弹出,并将该数据压入list2的左端
rpoplpush list1 list2

LSET 修改

格式:lset 参数1 参数2 参数3

  • 参数1:list名称
  • 参数2:索引
  • 参数3:值

示例:

  1. 将list1索引为0的值修改为hello
lset list1 0 hello

LINSERT 插入

格式:linsert 参数1 参数2 参数3 参数4

  • 参数1:list名称
  • 参数2:before | after
  • 参数3:已有值
  • 参数4:新值

示例:

  1. 在list1插入一个新值world位置在hello前面
linsert before hello world
  1. 在list2插入一个新值world位置在hello后面
linsert after hello world

1.5 Hash(哈希)操作命令

HSET 设置

格式:hset 参数1 参数2

  • 参数1:hash名称
  • 参数2:键值对

示例:

  1. 在user01中添加一个键值对key为id、value为1
hset user01 id 1

HGET 获取

格式:hget 参数1 参数2

  • 参数1:hash名称
  • 参数2:内部key
  1. 获取user01的id
hget user01 id

HMSET 批量设置

格式:hmset 参数1 参数2

  • 参数1:hash名称
  • 参数2:键值对(可以多个使用空格分隔)

示例:

  1. 在user01中添加一个id值为1、name值为zhangsan
hmset user01 id 1 name zhangsan

HMGET 批量获取

格式:hmget 参数1 参数2

  • 参数1:hash名称
  • 参数2:内部key(可以多个使用空格分隔)

示例:

  1. 获取user01的id和name
hmget user01 id name

HGETALL 获取所有

格式:hgetall 参数1

  • 参数1:hash名称

示例:

  1. 获取user001的所有内容
hgetall user001

HLEN 获取长度

格式:hlen 参数1

  • 参数1:hash名称

示例:

  1. 获取user001的键值对数量
hlen user001

HDEL 删除键值对

格式:hdel 参数1 参数2

  • 参数1:hash名称
  • 参数2:内部key

示例:

  1. 删除user001的name键值对
hdel user001 name

HEXISTS 存在检索

格式:hexists 参数1 参数2

  • 参数1:hash名称
  • 参数2:内部key

示例:

  1. 检索user001是否存在name键
hexists user001 name

HKEYS 获取所有键

格式:hkeys 参数1

  • 参数1:hash名称

示例:

  1. 获取user001的所有key
hkeys user001

HVALS 获取所有值

格式:hkeys 参数1

  • 参数1:hash名称

示例:

  1. 获取user001的所有value
hvals user001

HINCRBY 整数加法

格式:hincrby 参数1 参数2 参数3

  • 参数1:hash名称
  • 参数2:内部key

示例:

  1. 对user001中age的value增加1
hincrby user001 age 1

HINCRBYFLOAT 浮点数加法

格式:hincrbyfloat 参数1 参数2 参数3

  • 参数1:hash名称
  • 参数2:内部key

示例:

  1. 对user001中score的value增加0.5
hincrby user001 score 0.5

HSETNX NX规则设置

格式:hsetnx 参数1 参数2

  • 参数1:hash名称
  • 参数2:键值对

示例:

  1. 如果user01中不存在id,则添加一个键值对key为id、value为1
hsetnx user01 id 1

1.6 Set(集合)操作命令

SADD 添加元素

格式:sadd 参数1 参数2

  • 参数1:set名称
  • 参数2:元素(可以多个使用空格分隔)

示例:

  1. 将hello、world添加到set1
sadd set1 hello world

SMEMBERS 遍历

格式:smembers 参数1

  • 参数1:set名称

示例:

  1. 遍历set1
smembers set1

SISMEMBER 存在判断

格式:sismember 参数1 参数2

  • 参数1:set名称
  • 参数2:元素

示例:

  1. 判断hello是否存在于set1
sismember set hello

SREM 删除

格式:srem 参数1 参数2

  • 参数1:set名称
  • 参数2:元素

示例:

  1. 在set1中删除hello
srem set1 hello

SCARD 检索元素个数

格式:scard 参数1

  • 参数1:set名称

示例:

  1. 检索set1中元素个数
scard set1

SRANDMEMBER 随机展示

格式:srandmember 参数1 参数2

  • 参数1:set名称
  • 参数2:数量

示例:

  1. 在set1随机展示2个元素
srandmemeber set1 2

SPOP 随机弹出

格式:spop 参数1 参数2

  • 参数1:set名称
  • 参数2:数量

示例:

  1. 在set1 随机弹出2个元素
spop set1 2

注:spop与srandmember区别在于spop会将元素删除

SMOVE 元素移动

格式:smove 参数1 参数2 参数3

  • 参数1:数据源set名称
  • 参数2:接收set名称
  • 参数3:元素

示例:

  1. 将set1中的hello移动到set2
smove set1 set2 hello

SDIFF 差集

格式:sdiff 参数1 参数2

  • 参数1:被差运算set

  • 参数2:差运算set(可以多个用空格分隔)

示例:

  1. 检索在set1和set2中set1独有的元素
sdiff set1 set2

SUNION 并集

格式:sunion 参数1 参数2

  • 参数1:set名称

  • 参数2:set名称(可以多个用空格分隔)

示例:

  1. 检索set1、set2合并后的集合
sunion set1 set2

SINTER 交集

格式:sinter 参数1 参数2

  • 参数1:set名称

  • 参数2:set名称(可以多个用空格分隔)

示例:

  1. 检索set1和set2共有的元素,返回结果集
sinter set1 set2

SINTERCARD 交集(redis7新命令)

格式:sintercard 参数1 参数2 参数3

  • 参数1:参与的set数量

  • 参数2:参与的set名称(每个用空格分隔)

  • 参数3:limit限制

示例:

  1. 检索set1和set2共有的元素,返回数量
sintercard 2 set1 set2
  1. 检索set1和set2共有的元素,返回数量,且数量作最大限制为10
sintercard 2 set1 set2 limit 10

1.7 Zset(有序集合)操作命令

ZADD 添加

格式:zadd 参数1 参数2 参数3

  • 参数1:zset名称
  • 参数2:zset元素(score value)(可以多个使用空格分隔)

示例:

  1. 在zset1添加一个元素score为60、value为hello
zadd zset1 60 hello

ZRANGE 遍历

格式:zrange 参数1 参数2 参数3 [参数4]

  • 参数1:zset名称
  • 参数2:起始索引
  • 参数3:终止索引
  • 参数4:withscores

示例:

  1. 遍历zset1所有元素
zrange zset1 0 -1
  1. 附带分数遍历zset2所有元素
zrange zset2 0 -1 withscores

ZREVRANGE 反转遍历

格式:zrecrange 参数1 参数2 参数3 [参数4]

  • 参数1:zset名称
  • 参数2:起始索引
  • 参数3:终止索引
  • 参数4:withscores

示例:

  1. 反转遍历zset1所有元素
zrevrange zset1 0 -1
  1. 附带分数反转遍历zset2所有元素
zrevrange zset2 0 -1 withscores

ZRANGEBYSCORE 分数范围选取

格式:zrangebyscore 参数1 参数2 参数3 参数4 参数5

  • 参数1:zset名称
  • 参数2:最低分
  • 参数3:最高分
  • 参数4:withscores
  • 参数5:limit 起始索引 步长

示例:

  1. 检索zset1中60到100分的元素
zrangebyscore zset1 60 90 withscores
  1. 附带分数检索zset1中60到100分的元素
zrangebyscore zset1 60 90 withscores
  1. 检索zset1中60到100分的元素,限制从0开始步长为2
zrangebyscore zset1 60 90 limit 0 2

ZSCORE 检索分数

格式:zscore 参数1 参数2

  • 参数1:zset名称
  • 参数2:元素

示例:

  1. 检索zset1中v1元素的分数
zscore zset1 v1

ZCARD

格式:zcard 参数1

  • 参数1:zset名称

示例:

  1. 检索zset1元素个数
zcard zset1

ZREM 删除

格式:zrem 参数1 参数2

  • 参数1:zset名称
  • 参数2:元素(可以多个使用空格分隔)

示例:

  1. 删除zset1中v1、v2元素
zrem zset1 v1 v2

ZINCRBY 增加分数

格式:zincrby 参数1 参数2 参数3

  • 参数1:zset名称
  • 参数2:分数
  • 参数3:元素

示例:

  1. 将zset1中的v1元素的分数增加5分
zincrby zset1 5 v1

ZCOUNT 检索指定分数范围中的元素个数

格式:zcount 参数1 参数2 参数3

  • 参数1:zset名称
  • 参数2:最低分
  • 参数3:最高分

示例:

  1. 检索zset1中60到100分的元素个数
zcount zset1 60 100

ZMPOP 弹出

格式:zmpop 参数1 参数2 参数3 参数4

  • 参数1:数量(zset数量)
  • 参数2:zset名称(使用空格分隔)
  • 参数3:max | min
  • 参数4:数量(弹出数量)

示例:

  1. 从zset1、zset2中弹出2个最小的元素
zmpop 2 zset1 zset2 min 2

ZRANK 检索索引

格式:zrank 参数1 参数2

  • 参数1:zset名称
  • 参数2:元素

示例:

  1. 检索zset1中v1的索引号
zrank zset1 v1

ZREVRANK 检索反转索引

格式:zrevrank 参数1 参数2

  • 参数1:zset名称
  • 参数2:元素

示例:

  1. 反转检索zset1中v1的索引号
zrevrank zset1 v1

1.8 bitmap(位图)操作命令

SETBIT 设置

格式:setbit 参数1 参数2 参数3

  • 参数1:bitmap名称
  • 参数2:索引
  • 参数3:值( 1 | 0 )

示例:

  1. 将bitmap1的第一个位置的值设为1
setbit bitmap1 1 1

GETBIT 检索

格式:getbit 参数1 参数2

  • 参数1:bitmap名称
  • 参数2:索引

示例:

  1. 检索bitmap1索引为2的值
getbit bitmap1 2

STRLEN 统计字节数

格式:strlen 参数1

  • 参数1:bitmap名称

示例:

  1. 统计bitmap1占用的字节数(每8位占1字节)
strlen bitmap1

BITCOUNT 统计1

格式:bitcount参数1 [参数2]

  • 参数1:bitmap名称
  • 参数2:范围(起始字节 终止字节)

示例:

  1. 统计bitmap1值为1的数量
bitcount bitmap1
  1. 统计bitmap1中0到1字节范围内值为1的数量
bitcount bitmap1 0 1

BITOP 位运算

格式:bittop 参数1 参数2 参数3

  • 参数1:AND(与) | OR(或) | XOR(异或) | NOT(非)
  • 参数2:存放的bitmap
  • 参数3:参与运算的bitmap(空格分隔)

示例:

  1. 将bitmap1和bitmap2进行与运算并将结果存放在newbitmap
bitop and newbitmap bitmap1 bitmap2
  1. 将bitmap3进行非运算并将结果存放在newbitmap(非运算只能有一个bitmap)
bitop not newbitmap bitmap1

1.9 HyperLogLog(基数统计)操作命令

PFADD 添加

格式:pfadd 参数1 参数2

  • 参数1:hyperLogLog名称
  • 参数2:元素(可以多个,使用空格分隔)

示例:

  1. 将zs、ls添加到k1中
pfadd k1 zs ls

PFCOUNT 统计

格式:pfcount 参数1

  • 参数1:hyperLogLog名称(可以多个,使用空格分隔)

示例:

  1. 统计k1、k2中的基数个数
pfcount k1 k2

PFMERGE 合并

格式:pfmerge 参数1 参数2

  • 参数1:接收结果hyperLogLog名称
  • 参数2:hyperLogLog名称(使用空格分隔)

示例:

  1. 将k1、k2、k3合并到newkey中
pfmerge newkey k1 k2 k3

1.10 GEO(地理空间)操作命令

GEOADD 添加

格式:geo 参数1 参数2 参数3

  • 参数1:geo名称
  • 参数2:经度
  • 参数3:纬度
  • 参数4:描述

示例:

  1. 在city里面添加天安门、故宫的经纬度坐标
GEOADD city 116.403963 39.915119 "天安门" 116.403414 39.924091 "故宫"

GEOPOS 返回经纬度

格式:geopos 参数1 参数2 参数3

  • 参数1:geo名称
  • 参数2:描述(可以多个,使用空格分隔)

示例:

  1. 返回故宫、天安门的经纬度
geopos city "故宫" "天安门"

GEOHASH hash表示返回经纬度

格式:geohash参数1

  • 参数1:geo名称
  • 参数2:描述(可以多个,使用空格分隔)

示例:

  1. hash表示返回故宫、天安门的经纬度
geohash city "故宫" "天安门"

GEODIST 距离计算

格式:geodist 参数1 参数2 参数3

  • 参数1:geo名称
  • 参数2:描述1
  • 参数3:描述2
  • 参数3:单位( M | KM | FT | MI )

示例:

  1. 计算天安门和故宫相距多少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值)

示例:

  1. 返回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值)

示例:

  1. 返回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:键值对参数(可以多个,使用空格分隔)

示例:

  1. 在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 )

示例:

  1. 将mystream中超过阈值2的消息进行修剪
xtrim mystream maxlen 2
  1. 将mystream中小于1683373939844-0的消息进行修剪
xtrim mystream minid 1683373939844-0

XDEL 删除

格式:cdel 参数1 参数2

  • 参数1:队列名称
  • 参数2:消息ID(可以多个,使用空格分隔)

示例:

  1. 删除mystream中消息id为 1683373679898-0 的消息
xdel mystream 1683373679898-0

XLEN 统计

格式:xlen 参数1

  • 参数1:队列名称

示例:

  1. 统计mystream中的消息数
xlen mystream

XRANGE 获取

格式:xrange 参数1 参数2 参数3

  • 参数1:队列名称
  • 参数2:范围(max -> min)
  • 参数3:最大展示数量

示例:

  1. 获取最小值到最大值中最多5条消息
xrange stream - + count 1

XREVRANGE 反转获取

格式:xrevrange 参数1 参数2 参数3

  • 参数1:队列名称
  • 参数2:范围(min -> max)
  • 参数3:最大展示数量

示例:

  1. 获取最大值到最小值中最多5条消息
xrevrange stream + - count 1

XREAD 消息读取

格式:xread [参数1] [参数2] streams 参数3 参数4

  • 参数1:数量
  • 参数2:BLOCK (BLOCK以阻塞方式读取消息)
  • 参数3:队列名称
  • 参数4:返回范围

示例:

  1. 在mystream中从头开始读取两条数据
xread count 2 streams mystream 0-0
  1. 以阻塞方式在mystream中读取一条新数据
xread count 1 block 0 streams mystream $

1.11.2 消费组相关指令

XGROUP CREATE 创建消费者组

格式:xgroup create 参数1 参数2 参数3

  • 参数1:队列名称
  • 参数2:分组名称
  • 参数3:$ | 0 ($从尾部开始消费,0从头部开始消费)

示例:

  1. 基于mystream创建一个分组groupA,规则从尾部开始消费
xgroup create mystream groupA $

XREADGROUP GROUP

格式:xreadgroup group 参数1 参数2 streams 参数3 参数4

  • 参数1:消费组名称
  • 参数2:消费组名称
  • 参数3:数量
  • 参数4:队列名称
  • 参数5:读取消息的起始位置

示例:

  1. 在groupA创建一个消费者consumer1从 Stream 的最新位置开始读取读取mystream的2条消息
xreadgroup group groupA consumer1 count 2 streams mystream >

XACK 确认

格式:xack 参数1 参数2 参数3

  • 参数1:队列名称
  • 参数2:分组消息
  • 参数3:消息ID

示例:

  1. 确认一条mystream中groupA的消息,消息ID为1683375790000-0
xack mystream groupA 1683375790000-0

XPENDING 查询读取

格式:xpending 参数1 参数2 [参数3] [参数4]

  • 参数1:队列名称
  • 参数2:消费组名
  • 参数3:范围
  • 参数4:消费者名称

示例:

  1. 查询mystream中groupA分组在整个消息队列中已读取未确认的消息最大不超过10条
xpending mystream groupA - + 10
  1. 查询mystream中groupA分组的消费者consumer1已读取未确认的消息,范围是整个消息队列最大不超过10条
xpending mystream groupD - + 10 consumer1

XINFO

格式:xinfo stream 参数1

  • 参数1:队列名称

示例:

  1. 打印mystream的stream、消费组、消费用户信息
xinfo stream mystream

1.11.3 特殊符号

  1. -:最小可能出现的id;
  2. +:最大可能出现的id;
  3. $:表示只消费新的消息,当前流中最大的 id,可用于将要到来的信息;
  4. >:用于XREADGROUP命令,表示迄今还没有发送给组中使用者的信息,会更新消费者组的最后ID;
  5. *:用于XADD命令中,让系统自动生成 id;

1.12 bitdield(位域)操作命令

BITFIELD GET 获取

格式:bitfield 参数1 get 参数2 参数3

  • 参数1:字符串变量
  • 参数2:类型( i | u )
  • 参数3:位数

示例:

  1. 返回strTemp的17位开始获取偏移8位的数据的有符号整型量
bitfield strTemp get i8 16

BITFIELD SET 设置

格式:bitfield 参数1 set 参数2 参数3

  • 参数1:字符串变量
  • 参数2:类型( i | u )
  • 参数3:位数
  • 参数4:替换量

示例:

  1. 从strTemp的第9位开始将接下来的8位替换为120(字母x)
bitfield strTemp set i8 8 120

BITFIELD INCRBY 增加

格式:bitfield 参数1 incrby 参数2 参数3

  • 参数1:字符串变量
  • 参数2:类型( i | u )
  • 参数3:位数
  • 参数4:增加量

示例:

  1. 对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:增加量

溢出控制选项名词解释:

  1. WRAP:当位值溢出时,将自动从另一端开始重新计数,相当于将位值视为循环的。
  2. SAT:当位值溢出时,将自动截断为最大或最小的可表示值。
  3. FAIL:当位值溢出时,命令将返回一个错误。

示例:

  1. 对strTemp的第3个位开始,对接下来的4位无符号数加888,溢出控制设置为sat
bitfield strTemp overflow sat incrby u4 2 888

到了这里,关于redis十大数据类型的说明和常用命令的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Redis】十大数据类型(上篇)

    命令官网 英文版:https://redis.io/commands/ 中文版:http://redis.cn/commands.html/ Key命令 命令不区分大小写,但是key区分 命令 说明 keys * 查看当前库所有的key exists key 判断某个key是否存在,返回1表示存在,返回0表示不存在 type key 查看你的key是什么类型 del key 删除指定的key数据 unli

    2023年04月15日
    浏览(33)
  • Redis 数据类型及其常用命令一(string、list、set、zset、hash)

    1、简介         Redis 的常用数据类型有十种,分别为:string、list、set、zset、hash、geo、hyperloglog、bitmap、bitfield、stream。熟练使用各种数据类型,能够快速结合场景进行使用。 注:我们所说的数据类型是指 value 的数据类型,key 都是字符串。 所有类型的命令查看:help @数据类

    2024年03月13日
    浏览(57)
  • Redis常见类型及常用命令

    目录 常见的数据类型 一、String类型 1、简介 2、常用命令 (1)新建key (2)设值取值 ​编辑 (3)批量操作 (4)递增递减 3、原子性操作 4、数据结构 二、list类型 1、list常用命令 2、数据结构 三、hash类型 1、常用命令 (1)给集合中放值: hset stu name lc (2)取 (3)批量设

    2024年01月23日
    浏览(41)
  • Redis Redis的数据结构 - 通用命令 - String类型命令 - Hash类型命令

    目录 Redis的数据结构: Redis命令: 通用命令:(通用指令是部分数据类型的,都可以使用的指令) KEYS查询命令: DEL删除命令: EXISTS判断命令: EXPIPE有效期设置命令: TTL查看剩余期限命令: String类型: String的3种类型: String类型的常见命令: SET插入数据命令: MSET多重插

    2024年02月09日
    浏览(44)
  • Redis常用数据类型

    Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。 Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿) 它的value就是一个hash类型,而hash类型的结构key value形式。一般用于存放对象数据。 Redis列表是简单的字符串列表,按照插入顺序

    2024年02月12日
    浏览(42)
  • Redis常用数据类型和使用场景

    Redis目前支持5种数据类型,分别是:     String(字符串) List(列表) Hash(字典) Set(集合) Sorted Set(有序集合) 下面就分别介绍这五种数据类型及其相应的操作命令。   1. String(字符串) String是简单的 key-value 键值对,value 不仅可以是 String,也可以是数字。String在r

    2024年02月16日
    浏览(38)
  • redis常用五种数据类型详解

    目录 前言: string 相关命令 内部编码 应用场景 hash 相关命令 内部编码 应用场景 list 相关命令 内部编码 应用场景 set 相关命令 内部编码 应用场景 Zset 相关命令 内部编码 应用场景 渐进式遍历     redis有多种数据类型,常用的有五种,其他都是在特定场景下使用的数据类型。

    2024年02月11日
    浏览(42)
  • 深入学习 Redis - 常用数据类型,结构认识

    目录 一、Redis数据类型  Redis 数据类型结构简单认识 每个数据类型具体的编码方式 1.string  2.hash 3.list 4.set 5.zset 典中典:记数字!!! 6.查看 key 对应 value  的实际编码方式 如果本文有帮助到你,不妨给个三连吧~ Redis 中所有的 key 都是 string 类型,不同的是 value 的数据类型

    2024年02月16日
    浏览(53)
  • 【Redis】五大数据类型(操作命令)

    🚩Redis 键(key) 这些是 Redis 数据库中的命令,用于对数据类型进行操作和管理。以下是每个命令的含义和用法: DEL:删除一个或多个键。 DUMP:将一个键的值转储到一个字符串中。 EXPIRE:设置键的过期时间。 EXPIREAT:在给定的时间戳之后为键设置过期时间。 KEYS:返回匹配给

    2024年02月13日
    浏览(62)
  • Redis对象和五种常用数据类型

    对象分为键对象和值对象 键对象一般是string类型 值对象可以是string,list,set,zset,hash Redis对象和数据结构的关系 键总是一个字符串对象 而值可以是五种中的一种 type 命令 得到的结果就是值的类型 可以用object encoding命令查看编码 list数据类型的编码由linkedlist和ziplist编码合并

    2024年02月12日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包