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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

easyscholar配置秘钥连接Zotero-style,更方便的了解文献!

如果你不知道什么是easyScholar,以及怎么安装easyScholar? 请参见文章 easyScholar 一、easyscholar配置秘钥 1.首先打开easyscholar插件,并登录 2.点击自定义数据集 3.依次点击 用户信息-开放接口 4.点击刷新 5.在Zoter中 编辑-首选项-高级-编辑器 6.点击…

[C]环境(0/0)→ 环境配置

这里写目录标题 0x00 额环境下载解压 0x00 额 写了那么多C的入门,就是没写C语言的环境配置,乘此机会写了吧。 环境下载 直接在我这下载就好了,毕竟用了挺久没啥问题的 C语言环境(gcc version 8.1.0) 解压 最后得到…

快速构建高质量中文APP登录注册页面Figma源文件

在这个数字化时代,移动应用程序(APP)已经成为我们日常生活中不可或缺的一部分。如果您正在为您的中文APP开发登录注册页面,并寻找高质量的UI设计素材,那么您来对地方了!我们为您提供了一个完整的Figma源文件…

解答开发转软件测试岗的困惑

有个知乎网友做了一年的软件开发,打算转软件测试,但是面试了几家都没有回音,希望大家能给一点建议。 由于这个问题不是今年提的,所以不用担心知友是受到了疫情的影响,单纯应该是个人的问题。 因为他只做了一年开发就想…

Redis 扩展 RedisBloom 插件,解决缓存击穿、穿透

文章目录 一、概述二、编译准备2.1 升级 make2.2 安装 Python3 三、编译 RedisBloom四、测试 RedisBloom五、应用场景5.1 缓存击穿5.2 缓存穿透5.3 原理总结 六、存在的问题 如果您对Redis的了解不够深入请关注本栏目,本栏目包括Redis安装,Redis配置文件…

【tgcalls】Instance接口的实例类的创建

tg 里有多个版本,因此设计了版本管理的map,每次可以选择一个版本进行实例创建这样,每个客户端就可以定制开发了。tg使用了c++20创建是要传递一个描述者,里面是上下文信息 G:\CDN\P2P-DEV\tdesktop-offical\Telegram\ThirdParty\tgcalls\tgcalls\Instance.cpp可以看到竟然是…

js获取地址中携带的省市区

match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。 match() 方法将检索字符串 String Object,以找到一个或多个与 regexp 匹配的文本。这个方法的行为在很大程度上有赖于 regexp 是否具有标志 g。如果 regexp 没有标志 g&#x…

带有滑动菜单指示器的纯 CSS 导航选项卡

效果展示 CSS 知识点 filter 属性回顾 transition 属性回顾 使用单选框实现导航菜单的思路 单选框当点击完成后就会有一个:checked属性&#xff0c;可以利用这个属性来实现导航菜单底部滑动块的滑动动画和当前菜单项激活状态的管理。 整体页面结构 <div class"tab…

ZZ308 物联网应用与服务赛题第F套

2023年全国职业院校技能大赛 中职组 物联网应用与服务 任 务 书 &#xff08;F卷&#xff09; 赛位号&#xff1a;______________ 竞赛须知 一、注意事项 1.检查硬件设备、电脑设备是否正常。检查竞赛所需的各项设备、软件和竞赛材料等&#xff1b; 2.竞赛任务中所使用…

【Royalty in Wind 2.0.0】个人体测计算、资料分享小程序

前言 Royalty in Wind 是我个人制作的一个工具类小程序。主要涵盖体测计算器、个人学习资料分享等功能。这个小程序在2022年第一次发布&#xff0c;不过后来因为一些原因暂时搁置。现在准备作为我个人的小程序重新投入使用XD PS&#xff1a;小程序开发部分我是在21年跟随郄培…

配置Linux为无线路由器

配置Linux无线路由器 将Linux配置为无线路由器。使用hostapd&#xff0c;可以配置无线网卡为AP模式。 这里使用buildroot来生成这个工具。Wi-Fi模块使用的是 rt8188eus。 1. 内核配置 2. buildroot配置 开启 rt8188eus 驱动 3. 启动hostapd 系统启动后&#xff0c;会自动加…

innovus:set_ccopt_property基本用法备忘录(中)

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f; 拾陆楼知识星球入口 insertion_delay insertion delay的作用是指导clock tree做长或做短。具体可以看以下文章:innovus set_ccopt_property insertion_delay insertion_delay的设置的来源有三个…

detectron2环境搭建及自定义coco数据集(voc转coco)训练

detectron2建议ubuntu进行环境搭建&#xff0c;Windows大概率报错 一 环境搭建 创建虚拟环境 conda create -n detectron2 python3.8 -y conda activate detectron2后面下载源代码建议存到git中再git clone git clone https://github.com/facebookresearch/detectron2.git …

Linux搭建我的世界MC服务器 【Minecraft外网联机教程】

文章目录 前言1. 安装JAVA2. MCSManager安装3.局域网访问MCSM4.创建我的世界服务器5.局域网联机测试6.安装cpolar内网穿透7. 配置公网访问地址8.远程联机测试9. 配置固定远程联机端口地址9.1 保留一个固定tcp地址9.2 配置固定公网TCP地址9.3 使用固定公网地址远程联机 前言 Li…

蓝桥杯国一,非ACMer选手保姆级经验分享

目录 一、前言二、蓝桥杯简介三、0基础计算机新手小白&#xff0c;赛前如何准备提高自己的获奖率&#xff1f;3.1 每两周参加一次【蓝桥算法双周赛】3.2 多练真题3.3 参加每一场官方校内模拟赛 四、结语 一、前言 hello&#xff0c;大家好&#xff0c;我是大赛哥(弟)&#xff…

竞赛 目标检测-行人车辆检测流量计数

文章目录 前言1\. 目标检测概况1.1 什么是目标检测&#xff1f;1.2 发展阶段 2\. 行人检测2.1 行人检测简介2.2 行人检测技术难点2.3 行人检测实现效果2.4 关键代码-训练过程 最后 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 行人车辆目标检测计数系统 …

html实现竖直步骤条

1、问题描述 最近碰到一个需求&#xff0c;要把审批流程改为竖直步骤条的形式。本来想直接抄网上的&#xff0c;但是网上给的要么是水平步骤条&#xff0c;要么是集成在框架里的&#xff0c;要么就是人家写的太复杂了&#xff0c;js&#xff0c;css一大堆。 2、我的代码 代码下…

技术分享 | app自动化测试(Android)-- 特殊控件 Toast 识别

Toast 是 Android 系统中的一种消息框类型&#xff0c;它属于一种轻量级的消息提示&#xff0c;常常以小弹框的形式出现&#xff0c;一般出现 1 到 2 秒会自动消失&#xff0c;可以出现在屏幕上中下任意位置。它不同于 Dialog&#xff0c;它没有焦点。Toast 的设计思想是尽可能…

效率提升75%!要做矩阵号,更要做好矩阵号管理

在如今的信息数字化时代&#xff0c;面对竞争日趋激烈的市场&#xff0c;数字化转型成为了企业提高效率和竞争力、实现可持续发展的重要手段。 这一两年来&#xff0c;我们也发现&#xff0c;越来越多的品牌企业开始探索数字化转型的实践&#xff0c;通过使用自建或者采买的数据…

【Linux网络】2分钟学习centos7永久修改网卡名称

目录 第一步&#xff0c;先查看网卡名称 第二步&#xff1a;先修改配置文件/etc/default/grub&#xff0c;添加net.ifnemes0 第三步&#xff1a;重新加载内核配置grub2-mkconfig -o /boot/grub2/grub.cfg 第四步&#xff1a;重启电脑 第五步&#xff1a;查看网卡名称&…