Redis7--基础篇2(Redis的十大数据类型及常用命令)

news2024/11/22 16:35:01

1. Redis的十大数据类型及常用命令

Redis是key-value键值对类型的数据库,我们所说的数据类型指的是value的数据类型,key的数据类型都是字符串。
在这里插入图片描述

1.1 字符串(String)

string是redis最基本的类型,一个key对应一个value。
string类型是二进制安全的,意思是redis的string可以包含任何数据,比如jpg图片或者序列化的对象 。
string类型是Redis最基本的数据类型,一个redis中字符串value最多可以是512M

  • 常用命令
命令说明
SET key value设置指定key的值
GET key获取指定key的值
GETRANGE key start end返回key中字符串的子字符[0,-1]表示全部在这里插入图片描述
GETSET key value将指定的key的值设置为value,并返回key的旧值在这里插入图片描述
GETBIT key offset对key所存储的字符串值,获取指定偏移量上的位(bit)
例如k1 h h对应的十六进制为01101000,对应的 GETBIT k1 0的值是0,GETBIT k1 1的值是1 GETBIT k1 7的值为0在这里插入图片描述
MGET key1 [key2]获取所有指定的key的值在这里插入图片描述
SETBIT key offset value对key锁存储的字符串值,设置或清除指定偏移量上的位(bit)
SETEX key second value将值value关联到key,并将key的过期时间设为value秒
SETNX key value只有在key不存在时设置key的值
SETRANGE key offset value用value复写key的值,从偏移量offset开始在这里插入图片描述
STRLEN key返回key所存储的字符串值的长度
MSET key1 value1 [key2 value2]同时设置一个或多个key-value键值对在这里插入图片描述
MSETNX key1 value1 [key2 value2]同时设置一个或多个key-value键值对,当且仅当所有key都不存在时在这里插入图片描述
PSETEX key millisecounds value这个命令和SETEX命令相似,但他以毫秒为单位设置key的生存时间,而不是像SETEX命令那样,以秒为单位
INCR key将key中存储的数字值增加1
INCRBY key increment将key所存储的的值加上指定的值(increment)
INCRBYFLOAT key increment将key所存储的的值加上指定的浮点值(increment)
DECR key将key中存储的数值减1
DECRBY key decrementkey所存储的值减去指定的值(decrement)
APPEND key value如果key已经存在并且是一个字符串,APPEND命令将value追加到key原来的值的末尾
  • set 命令详细介绍
    set key value [NX|XX] [GET] [EX seconds|PX milliseconds|EXAT unix-time-seconds|PXAT unix-time-milliseconds|KEEPTTL] 在这里插入图片描述
  • keepttl 已经存在的key-value在重新set时,会改变过期时间,使用keepttl参数,保留原始的过期时间。
    在这里插入图片描述

实际应用方面
比如点赞谋篇文章或抖音无限点赞,可以使用incr key 命令增加1
比如可以使用过期时间来设置分布式锁,在这先了解一下概念和思路,之后高级篇会详细讲解

1.2 列表(List)

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
它的底层实际是个双端链表,最多可以包含 2^32 - 1 个元素 (4294967295, 每个列表超过40亿个元素),对两端的操作性能很高,通过索引下标的操作中间的节点性能会较差。
在这里插入图片描述

lpush k1 v1 v2 v3 v4 v5 v6 v7 其中v7是头,v1是尾

  • 常用命令
命令说明
LPUSH key value1 [value2…]将value1、value2… 按照从左向右插入到列表头部,最后输入的value在最前面,返回值为列表的长度

在这里插入图片描述

RPUSH key value1 [value2…]将value1、value2… 按照从右向左插入到列表头部,最后输入的value在最后面,返回值为列表的长度

在这里插入图片描述

LPUSHX key value1 [value2…]将value1、value2… 按照从左向右插入到已经存在的列表头部,最后输入的value在最前面,返回值为列表的长度

在这里插入图片描述

RPUSHX key value1 [value2…]将value1、value2… 按照从右向左插入到已经存在的列表头部,最后输入的value在最后面,返回值为列表的长度

在这里插入图片描述

LREM key count value从列表头开始删除count个value

在这里插入图片描述

在这里插入图片描述

LLEN key获取列表key的长度(值为列表元素的个数,即最大索引+1)
LINDEX key index通过索引index值获取列表中的元素

在这里插入图片描述

LRANGE key start stop获取列表key指定范围内的元素,【0,-1】表示获取全部元素
LSET key index value替换index索引对应的值为value

在这里插入图片描述

LTRIM key start stop裁剪原列表

在这里插入图片描述

LINSERT key BEFORE|AFTER pivot value在key列表从头到尾的顺序第一个匹配pivot元素值的前或者后面增加值value

在这里插入图片描述

在这里插入图片描述

LPOP key count移出并获取列表头的count个元素

在这里插入图片描述

RPOP key count移出并获取列表尾的count个元素

在这里插入图片描述

BLPOP key1 [key2] timeout移出并获取列表的第一个元素(key1列表结束后开始key2列表),如果列表没有元素会阻塞列表直到等待timeout秒后超时或发现可移出元素为止

在这里插入图片描述

BRPOP key1 [key2] timeout移出并获取列表的最后一个元素,如果列表没有元素会阻塞列表直到等待timeout秒后超时或发现可移出元素为止

在这里插入图片描述

BRPOPLPUSH source destination timeout移出source列表的最后一个值,并放入destination列表的最后,如果列表没有元素会阻塞列表直到等待timeout秒或发现可移除元素为止

在这里插入图片描述

RPOPLPUSH source destinationRPOPLPUSH为BRPOPLPUSH的非阻塞版本

在这里插入图片描述

1.3 哈希(Hash)

Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。
Redis 中每个 hash 可以存储 2^32 - 1 键值对(40多亿)。

  • 常用命令
命令说明
HMSET key field1 value1 [field2 value2 …]设置hash值

在这里插入图片描述

HGETALL key获取hash的所有field和value

在这里插入图片描述

HGET key field获取一个hash对应的field的value

在这里插入图片描述

HMGET key field1 [field2 …]获取一个或多个hash对应的field的value

在这里插入图片描述

HKEYS key获取hash所有的key值

在这里插入图片描述

HVALS key获取hash所有key对应的value

在这里插入图片描述

HLEN key获取hash对应的filed的数量

在这里插入图片描述

HSTRLEN key field获取hash指定field的value的长度

在这里插入图片描述

HEXISTS key field判断hash是否存在指定的field

在这里插入图片描述

HSET key field value设置hash对应的field和value

在这里插入图片描述

HSETNX key field value仅当指定的field在hash中不存在时才设置value

在这里插入图片描述

HINCRBY key field increment将hash中指定的field的整型值增加increment

在这里插入图片描述

HINCRBYFLOAT key field increment将hash中指定的field的值增加increment

在这里插入图片描述

HSCAN key cusror [MATCH pattern] [COUNT count]不知道,没用明白

1.4 集合(Set)

Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据,集合对象的编码可以是 intset(整数集合) 或者 hashtable(字典或者也叫哈希表)。
Redis 中Set集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
集合中最大的成员数为 2^32 - 1 (4294967295, 每个集合可存储40多亿个成员)

  • 常用命令
命令说明
SADD key member1 [member2…]添加一个或多个元素到集合里

在这里插入图片描述

SCARD key获取集合里的元素数量

在这里插入图片描述

SDIFF key1 [key2…]获取key1中不存在于其他key的元素

在这里插入图片描述

SDIFFSTORE destination key1 [key2…]获取队列不存在的元素,并存储在destination中,destination存在则会重新生成dstination

在这里插入图片描述

SINTER key1 [key2…]获取多个key集合的交集

在这里插入图片描述

SINTERSTORE destination key1 [key2…]获取多个集合的交集,并存储在destination中,destination存在则会重新生成dstination

在这里插入图片描述

SISMEMBER key member确定一个给定的值是一个集合的成员

在这里插入图片描述

SMEMBERS key获取集合里面的所有元素

在这里插入图片描述

SMOVE source destination member移动集合里的一个元素到另一个集合

在这里插入图片描述

SPOP key [count]删除并获取一个集合里面的count个元素

在这里插入图片描述

SRANDMEMBER key [count]从集合里面随机获取count个元素

在这里插入图片描述

SREM key member1 [member2…]从集合里删除一个或多个元素

在这里插入图片描述

SUNION key1 [key2…]获取多个集合的元素(不会有重复的元素)

在这里插入图片描述

SUNIONSTORE destination key1 [key2…]合并set元素,并将结果存入到destination中

在这里插入图片描述

SINTERCARD numkeys key1 [key2…] [LIMIT limit]返回指定结果集的交集产生的集合的基数

在这里插入图片描述

SSCAN key cursor [MATCH pattern] [COUNT count]不知道,没用明白

1.5 有序集合(ZSet)

Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数,redis正是通过分数来为集合中的成员进行从小到大的排序。
zset的成员是唯一的,但分数(score)却可以重复。
zset集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。 集合中最大的成员数为 2^32 - 1。

  • 常用命令
命令说明
ZADD key [NX\XX] [CH] [INCR] score1 member1 [score 2 member2]XX: 仅仅更新存在的成员,不添加新成员。
NX: 不更新存在的成员。只添加新成员。
CH: 修改返回值为发生变化的成员总数,原始是返回新添加成员的总数 (CH 是 changed 的意思)。更改的元素是新添加的成员,已经存在的成员更新分数。所以在命令中指定的成员有相同的分数将不被计算在内。注:在通常情况下,ZADD返回值只计算新添加成员的数量。
INCR: 当ZADD指定这个选项时,成员的操作就等同ZINCRBY命令,对成员的分数进行递增操作。
在这里插入图片描述
ZCARD key获取一个排序集合中的成员数量
在这里插入图片描述
ZCOUNT key min max返回分数范围内的成员数量

在这里插入图片描述

ZINCRBY key increment member将一名成员的评分增加increment

在这里插入图片描述

ZRANGE key start stop [WITHSCORES]返回有序集 key 中,指定区间内的成员。其中成员的位置按 score 值递增(从小到大)来排序。具有相同 score 值的成员按字典序(lexicographical order )来排列。
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大)次序排列。具有相同 score 值的成员按字典序(lexicographical order)来排列(该属性是有序集提供的,不需要额外的计算)。可选的 LIMIT 参数指定返回结果的数量及区间(就像SQL中的 SELECT LIMIT offset, count ),注意当 offset 很大时,定位 offset 的操作可能需要遍历整个有序集,此过程最坏复杂度为 O(N) 时间。可选的 WITHSCORES 参数决定结果集是单单返回有序集的成员,还是将有序集成员及其 score 值一起返回。该选项自 Redis 2.0 版本起可用。
ZRANK key member返回有序集 key 中成员 member 的排名。其中有序集成员按 score 值递增(从小到大)顺序排列。排名以 0 为底,也就是说, score 值最小的成员排名为 0 。
ZREM key member [member …]移除有序集 key 中的一个或多个成员,不存在的成员将被忽略。当 key 存在但不是有序集类型时,返回一个错误。
ZREMRANGEBYRANK key start stop移除有序集 key 中,指定排名(rank)区间内的所有成员。区间分别以下标参数 start 和 stop 指出,包含 start 和 stop 在内。下标参数 start 和 stop 都以 0 为底,也就是说,以 0 表示有序集第一个成员,以 1 表示有序集第二个成员,以此类推。你也可以使用负数下标,以 -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。
ZREMRANGEBYSCORE key min max移除有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。自版本2.1.6开始, score 值等于 min 或 max 的成员也可以不包括在内,详情请参见 ZRANGEBYSCORE 命令。
ZREVRANGE key start stop [WITHSCORES]返回有序集 key 中,指定区间内的成员。其中成员的位置按 score 值递减(从大到小)来排列。具有相同 score 值的成员按字典序的逆序(reverse lexicographical order)排列。除了成员按 score 值递减的次序排列这一点外, ZREVRANGE 命令的其他方面和 ZRANGE 命令一样。
ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]返回有序集 key 中, score 值介于 max 和 min 之间(默认包括等于 max 或 min )的所有的成员。有序集成员按 score 值递减(从大到小)的次序排列。具有相同 score 值的成员按字典序的逆序(reverse lexicographical order )排列。除了成员按 score 值递减的次序排列这一点外, ZREVRANGEBYSCORE 命令的其他方面和 ZRANGEBYSCORE 命令一样。
ZREVRANK key member返回有序集 key 中成员 member 的排名。其中有序集成员按 score 值递减(从大到小)排序。排名以 0 为底,也就是说, score 值最大的成员排名为 0 。使用 ZRANK 命令可以获得成员按 score 值递增(从小到大)排列的排名。
ZSCORE key member返回有序集 key 中,成员 member 的 score 值。如果 member 元素不是有序集 key 的成员,或 key 不存在,返回 nil 。
ZUNIONSTORE destination numkeys key [key …] [WEIGHTS weight [weight …]] [AGGREGATE SUM|MIN|MAX]计算给定的一个或多个有序集的并集,其中给定 key 的数量必须以 numkeys 参数指定,并将该并集(结果集)储存到 destination 。默认情况下,结果集中某个成员的 score 值是所有给定集下该成员 score 值之 和 。
ZINTERSTORE destination numberkeys key1 [key2…] [WEIGHTS weight] [SUM|MIN|MAX]计算给定的numkeys个有序集合的交集,并且把结果放到destination中。 在给定要计算的key和其它参数之前,必须先给定key个数(numberkeys)。
默认情况下,结果中一个元素的分数是有序集合中该元素分数之和,前提是该元素在这些有序集合中都存在。因为交集要求其成员必须是给定的每个有序集合中的成员,结果集中的每个元素的分数和输入的有序集合个数相等。如果destination存在,就把它覆盖。

在这里插入图片描述

1.6 地理空间(GEO)

Redis GEO 主要用于存储地理位置信息,并对存储的信息进行操作,包括:
添加地理位置的坐标。
获取地理位置的坐标。
计算两个位置之间的距离。
根据用户给定的经纬度坐标来获取指定范围内的地理位置集合。
地球上的地理位置是使用二维的经纬度表示,经度范围 (-180, 180],纬度范围 (-90, 90],只要我们确定一个点的经纬度就可以名取得他在地球的位置。
在这里插入图片描述
将三维的地球变为二维的坐标,再将二维的坐标转换为一维的点块,最后将一维的点块转换为二进制再通过base32编码。

如何获取某个地址的经纬度:
https://api.map.baidu.com/lbsapi/getpoint/

  • 常用命令
命令说明
GEOADD key longitude latitude member [longitude latitude member …]将指定的地理空间位置(纬度、经度、名称)添加到指定的key中。这些数据将会存储到sorted set这样的目的是为了方便使用GEORADIUS或者GEORADIUSBYMEMBER命令对数据进行半径查询等操作。
GEOHASH key member [member …]时间复杂度:O(log(N)) for each member requested, where N is the number of elements in the sorted set.返回一个或多个位置元素的 Geohash 表示。通常使用表示位置的元素使用不同的技术,使用Geohash位置52点整数编码。由于编码和解码过程中所使用的初始最小和最大坐标不同,编码的编码也不同于标准。此命令返回一个标准的Geohash,在维基百科和geohash.org网站都有相关描述
GEOPOS key member [member …]从key里返回所有给定位置元素的位置(经度和纬度)。
GEODIST key member1 member2 [unit]返回两个给定位置之间的距离。如果两个位置之间的其中一个不存在, 那么命令返回空值。指定单位的参数 unit 必须是以下单位的其中一个:m 表示单位为米。km 表示单位为千米。mi 表示单位为英里。ft 表示单位为英尺。如果用户没有显式地指定单位参数, 那么 GEODIST 默认使用米作为单位。
GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count]以给定的经纬度为中心, 返回键包含的位置元素当中, 与中心的距离不超过给定最大距离的所有位置元素。范围可以使用以下其中一个单位:m 表示单位为米。km 表示单位为千米。mi 表示单位为英里。ft 表示单位为英尺。
GEORADIUSBYMEMBER key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count]这个命令和 GEORADIUS 命令一样, 都可以找出位于指定范围内的元素, 但是 GEORADIUSBYMEMBER 的中心点是由给定的位置元素决定的, 而不是像 GEORADIUS 那样, 使用输入的经度和纬度来决定中心点指定成员的位置被用作查询的中心。

处理中文显式乱码
使用 rwa参数

redis -cli --raw

1.7 基数统计(HyperLogLog)

HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定且是很小的。
在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基 数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。
但是,因为 HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以 HyperLogLog 不能像集合那样,返回输入的各个元素。

需求:
统计某个网站、某篇文章的UV(UNIQUE VISITOR)

功能:
一种去重复后的真实个数的数据集。

常用命令:

命令说明
PFADD key element [element …]将除了第一个参数以外的参数存储到以第一个参数为变量名的HyperLogLog结构中.
PFCOUNT key [key …]当参数为一个key时,返回存储在HyperLogLog结构体的该变量的近似基数,如果该变量不存在,则返回0.
PFMERGE destkey sourcekey [sourcekey …]将多个 HyperLogLog 合并(merge)为一个 HyperLogLog , 合并后的 HyperLogLog 的基数接近于所有输入 HyperLogLog 的可见集合(observed set)的并集.

1.8 位图(bitmap)

由0和1状态表现的二进制位的bit数组
在这里插入图片描述

需求:
每日签到、上下班打卡

常用命令:

命令说明
SETBIT key offset value设置或者清空key的value(字符串)在offset处的bit值。
GETBIT key offset返回key对应的string在offset处的bit值 当offset超出了字符串长度的时候,这个字符串就被假定为由0比特填充的连续空间。当key不存在的时候,它就认为是一个空字符串,所以offset总是超出范围,然后value也被认为是由0比特填充的连续空间。到内存分配。
STRLEN key返回key的string类型value的长度。如果key对应的非string类型,就返回错误。
BITCOUNT key [start end]统计字符串被设置为1的bit数.一般情况下,给定的整个字符串都会被进行计数,通过指定额外的 start 或 end 参数,可以让计数只在特定的位上进行。
BITOP operation destkey key [key …]对一个或多个保存二进制位的字符串 key 进行位元操作,并将结果保存到 destkey 上。

应用场景:
在这里插入图片描述

1.9 位域(bitfield)

通过bitfield命令可以一次性操作多个比特位域(指的是连续的多个比特位),它会执行一系列操作并返回一个响应数组,这个数组中的元素对应参数列表中的相应操作的执行结果。
说白了就是通过bitfield命令我们可以一次性对多个比特位域进行操作。

将一个Redis字符串看作是一个由二进制位组成的数组,并能对变长位宽和任意没有字节对齐的指定整型位域进行寻址和修改。

1.10 流(Stream)

Redis Stream 是 Redis 5.0 版本新增加的数据结构。
Redis Stream 主要用于消息队列(MQ,Message Queue),Redis 本身是有一个 Redis 发布订阅 (pub/sub) 来实现消息队列的功能,但它有个缺点就是消息无法持久化,如果出现网络断开、Redis 宕机等,消息就会被丢弃。
简单来说发布订阅 (pub/sub) 可以分发消息,但无法记录历史消息。
而 Redis Stream 提供了消息的持久化和主备复制功能,可以让任何客户端访问任何时刻的数据,并且能记住每一个客户端的访问位置,还能保证消息不丢失。

Stream结构:
在这里插入图片描述

1Message Content消息内容
2Consumer group消费组,通过XGROUP CREATE 命令创建,同一个消费组可以有多个消费者
3Last_delivered_id游标,每个消费组会有个游标 last_delivered_id,任意一个消费者读取了消息都会使游标 last_delivered_id 往前移动。
4Consumer消费者,消费组中的消费者
5Pending_ids消费者会有一个状态变量,用于记录被当前消费已读取但未ack的消息Id,如果客户端没有ack,这个变量里面的消息ID会越来越多,一旦某个消息被ack它就开始减少。这个pending_ids变量在Redis官方被称之为 PEL(Pending Entries List),记录了当前已经被客户端读取的消息,但是还没有 ack (Acknowledge character:确认字符),它用来确保客户端至少消费了消息一次,而不会在网络传输的中途丢失了没处理

队列常用命令:

命令说明
XADD key ID field string [field string …]将指定的流条目追加到指定key的流中。 如果key不存在,作为运行这个命令的副作用,将使用流的条目自动创建key。
XRANGE key start end [COUNT count]此命令返回流中满足给定ID范围的条目。范围由最小和最大ID指定。所有ID在指定的两个ID之间或与其中一个ID相等(闭合区间)的条目将会被返回。XRANGE命令有许多用途:返回特定时间范围的项目。这是可能的,因为流的ID与时间相关。增量迭代流,每次迭代只返回几个项目。但它在语义上比SCAN函数族强大很多。从流中获取单个条目,提供要获取两次的条目的ID:作为查询间隔的开始和结束。该命令还有一个倒序命令,以相反的顺序返回项目,叫做XREVRANGE,除了返回顺序相反以外,它们是完全相同的。
XREVRANGE此命令与XRANGE完全相同,但显著的区别是以相反的顺序返回条目,并以相反的顺序获取开始-结束参数:在XREVRANGE中,你需要先指定结束ID,再指定开始ID,该命令就会从结束ID侧开始生成两个ID之间(或完全相同)的所有元素。因此,例如,要获得从较高ID到较低ID的所有元素,可以使用:XREVRANGE + -
XDEL从指定流中移除指定的条目,并返回成功删除的条目的数量,在传递的ID不存在的情况下, 返回的数量可能与传递的ID数量不同。
XLEN返回流中的条目数。如果指定的key不存在,则此命令返回0,就好像该流为空。 但是请注意,与其他的Redis类型不同,零长度流是可能的,所以你应该调用TYPE 或者 EXISTS 来检查一个key是否存在。
XTRIMXTRIM将流裁剪为指定数量的项目,如有需要,将驱逐旧的项目(ID较小的项目)。此命令被设想为接受多种修整策略,但目前只实现了一种,即MAXLEN,并且与XADD中的MAXLEN选项完全相同。
XREAD从一个或者多个流中读取数据,仅返回ID大于调用者报告的最后接收ID的条目。此命令有一个阻塞选项,用于等待可用的项目,类似于BRPOP或者BZPOPMIN等等。

消费常用命令:

命令说明
XGROUP [CREATE key groupname id-or-$] [SETID key id-or-$] [DESTROY key groupname] [DELCONSUMER key groupname consumername]该命令用于管理流数据结构关联的消费者组。使用XGROUP你可以:创建与流关联的新消费者组。销毁一个消费者组。从消费者组中移除指定的消费者。将消费者组的最后交付ID设置为其他内容。要创建一个新的消费者组,请使用以下格式:XGROUP CREATE mystream consumer-group-name $
XREADGROUP GROUP group consumer [COUNT count] [BLOCK milliseconds] STREAMS key [key …] ID [ID …]XREADGROUP命令是XREAD命令的特殊版本,支持消费者组。在阅读本页之前,你可能必须先理解XREAD命令才有意义。
XPENDING通过消费者组从流中获取数据,而不是确认这些数据,具有创建待处理条目的效果。这在XREADGROUP命令中已有详尽的说明,在我们的Redis Streams介绍中更好。XACK命令会立即从待处理条目列表(PEL)中移除待处理条目,因为一旦消息被成功处理,消费者组就不再需要跟踪它并记住消息的当前所有者。
XACKXACK命令用于从流的消费者组的待处理条目列表(简称PEL)中删除一条或多条消息。 当一条消息交付到某个消费者时,它将被存储在PEL中等待处理, 这通常出现在作为调用XREADGROUP命令的副作用,或者一个消费者通过调用XCLAIM命令接管消息的时候。 待处理消息被交付到某些消费者,但是服务器尚不确定它是否至少被处理了一次。 因此对新调用XREADGROUP来获取消费者的消息历史记录(比如用0作为ID)将返回此类消息。 类似地,待处理的消息将由检查PEL的XPENDING命令列出。

1.11 Redis常用命令

命令说明
keys *查看当前库所有的key
exists key判断某刻key是否存在
type key查看key的类型
del key删除指定的key
unlink key非阻塞删除,仅仅将key从keyspace元数据中删除,真正的删除会在后续异步执行
ttl key查看还有多少表过期,-1表示永不过期,-2表示已过期
expire key 秒设置key多少秒后过期
pexpire 毫秒设置key多少毫秒后过期
expireat 秒(时间戳格式)设置key什么时候过期
pexpireat 毫秒(时间戳格式)设置key什么时候过期
move key dbindex[0-15]将当前库的key移动到指定库中
select dbindex[0-15]切换数据库[0-15],默认为0,单例模式redis会一次性创建16个库
集群模式下只有一个库db0
dbsize查看当前库的key数量
flushdb清空当前库
flushall清空所有库

Redis常用命令查询网址

  • 中文
    http://www.redis.cn/commands.html

  • 英文
    https://redis.io/commands

  • 命令参考
    http://doc.redisfans.com/index.html

命令不区分大小写,Key是大小写敏感的
永远的帮助命令 help@类型 例如:help @string

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1181827.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker 学习路线 10:容器安全

容器安全是实施和管理像Docker这样的容器技术的关键方面。它包括一组实践、工具和技术,旨在保护容器化应用程序及其运行的基础架构。在本节中,我们将讨论一些关键的容器安全考虑因素、最佳实践和建议。 容器隔离 隔离对于确保容器化环境的强大性和安全…

CSDN每日一题学习训练——Java版(对给定的两个日期之间的日期进行遍历、子集 II、填充每个节点的下一个右侧节点指针)

版本说明 当前版本号[20231107]。 版本修改说明20231107初版 目录 文章目录 版本说明目录对给定的两个日期之间的日期进行遍历题目解题思路代码思路参考代码 子集 II题目解题思路代码思路参考代码 填充每个节点的下一个右侧节点指针题目解题思路代码思路参考代码 对给定的两…

【计算机组成】实模式/保护模式下地址分段(基段地址+偏移地址)的原因

一.硬编码/静态重定向 我们先来观察下没有地址分段时代CPU是怎么和内存们打交道,在8086CPU以前的老大哥们,访问内存时通常就是实打实的“指哪打哪”,程序指定要放在哪个地址,那就老老实实地放在哪个地址,比如程序A要放…

如何使新手小白编码能力暴涨之Devchat-AI

在这个快速发展的时代,开发者的任务越来越繁重,要求他们快速、高效地完成开发任务。然而,传统的开发方式已经无法满足这个需求。在这种情况下,Devchat的出现给开发者带来了新的帮助。Devchat是一个研发效能分析平台,它…

掌握未来技术趋势:深度学习与量子计算的融合

掌握未来技术趋势:深度学习与量子计算的融合 摘要:本博客将探讨深度学习与量子计算融合的未来趋势,分析这两大技术领域结合带来的潜力和挑战。通过具体案例和技术细节,我们将一睹这两大技术在人工智能、药物研发和金融科技等领域…

【Node.js入门之—1.1Node.js 简介】

Node.js入门之—1.1Node.js 简介 文章目录 Node.js入门之—1.1Node.js 简介什么是 Node.js错误说法 Node.js 的特点跨平台三方类库自带http服务器非阻塞I/O事件驱动单线程 Node.js 的应用场合适合用Node.js的场合不适合用Node.js的场合弥补Node.js不足的解决方案 什么是 Node.j…

Oracle RAC是啥?

Oracle RAC,全称是Oracle Real Application Cluster,翻译过来为Oracle真正的应用集群,它是Oracle提供的一个并行集群系统,由 Oracle Clusterware(集群就绪软件) 和 Real Application Cluster(RA…

Linux之如何使用git提交代码到gitee上

📘北尘_:个人主页 🌎个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 文章目录 一、创建gitee仓库1、进入gitee2、注册账号3、创建仓库 二、使用Linux创建1、打开Xshell创建一…

SpringBoot工程四种创建方式

创建SpringBoot项目时选择依赖:Spring Web、MySQL Driver、Thymeleaf、lombok 开发控制器类:标记了Controller的类就是一个handler类 handler类在SpringBoot中的作用就是:其内部的方法可以接受请求,处理请求,返回响应…

Intel oneAPI笔记(4)--jupyter官方文档(Unified Shared Memory)学习笔记

前言 本文是对jupyterlab中oneAPI_Essentials/03_Unified_Shared_Memory文档的学习记录,主要包含对统一共享内存的讲解 USM概述 USM (Unified Shared Memory)是SYCL中基于指针的内存管理。对于使用malloc或new来分配数据的C和C程序员来说应该很熟悉。当将现有的C…

如何定义类

类是将数据和方法封装在一起的一种数据结构,其中数据表示类的属性,方法表示类的行为,所以定义类实际上就是定义类的属性与方法。用户定义一个类实际上就是定义一个新的数据类型。在使用类之前,必须先定义它,然后才可利…

【JavaEE初阶】 UDP协议的详细解析

文章目录 🌲UDP协议概念🌴UDP协议端格式🎄UDP的特点🚩无连接🚩不可靠传输🚩面向数据报🚩缓冲区🚩全双工🚩大小受限 🍀基于UDP的应用层协议🎍扩展问…

Linux安装nodejs问题

安装nodejs后,使用node -v报下图 参考下面两个可解决:【Linux-编译器gcc/glibc升级】CentOS7.9使用NodeJS18时报错/lib64/libm.so.6: version GLIBC_2.27‘ not found-CSDN博客 报错信息ImportError: /lib64/libstdc.so.6: version CXXABI_1.3.9‘ not f…

JavaScript使用对象

对象(object)是最基本、最通用的类型,具有复合性结构,属于引用型数据,对象的结构具有弹性,内部的数据是无序的,每个成员被称为属性。在JavaScript中,对象是一个泛化的概念,任何值都可以转换为对…

FreeRTOS源码阅读笔记2--list.c

list.c中主要完成列表数据结构的操作,有列表和列表项的初始化、列表的插入和移除。 2.1列表初始化vListInitialise() 2.1.1函数原型 void vListInitialise( List_t * const pxList ) pxList:列表指针,指向要初始化的列表。 2.1.2函数框架…

viple进阶2:打印九九乘法表

(1)题目 题目:使用viple打印九九乘法表 (2)设计与实现 观察效果图,发现: 1、第1行,有1个公式;第2行有2个公式;第3行有3个公式,以此类推&#x…

Texlive安装

下载4.8G的iso文件 解压 或 装载后,以管理员身份运行(.bat)文件。 运行以下两句代码进行Texlive相关升级 tlmgr option repository otan tlmgr update --self --all 运行以下三行代码,检查是否安装成功 latex -v xelatex -v pdflatex -v 如果有异常…

基于协作搜索算法的无人机航迹规划-附代码

基于协作搜索算法的无人机航迹规划 文章目录 基于协作搜索算法的无人机航迹规划1.协作搜索搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要:本文主要介绍利用协作搜索算法来优化无人机航迹规划。 …

思谋科技进博首秀:工业多模态大模型IndustryGPT V1.0正式发布

大模型技术正在引领新一轮工业革命,但将其应用于工业制造,仍面临许多挑战,专业知识的缺乏是关键难点。11月5日,香港中文大学终身教授、思谋科技创始人兼董事长贾佳亚受邀参加第六届中国国际进口博览会暨虹桥国际经济论坛开幕式。虹…

技术分享 | app自动化测试(Android)--显式等待机制

WebDriverWait类解析 WebDriverWait 用法代码 Python 版本 WebDriverWait( driver,timeout,poll_frequency0.5,ignored_exceptionsNone) 参数解析: driver:WebDriver 实例对象 timeout: 最长等待时间,单位秒 poll_frequency: 检测的间…