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

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

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

相关文章

船舶数据采集与数据模块解决方案

标准化信息处理单元原理样机初步方案: 1)系统组成 标准化信息处理单元原理样机包含硬件部分和软件部分。 硬件部分包括集成电路板、电源模块、主控模块、采集模块、信息处理模块、通讯模块、I/O模块等。 软件部分包括协议统一标准化模块、设备互联互…

Scala爬虫如何实时采集天气数据?

这是一个基本的Scala爬虫程序,使用了Scala的http library来发送HTTP请求和获取网页内容。在爬取天气预报信息时,我们首先需要创建一个代理对象proxy,并将其用于发送HTTP请求。然后,我们使用http库的GET方法获取网页内容&#xff0…

【高分快刊】Elsevier旗下,中科院2区SCI,2个月19天录用!

计算机类 • 高分快刊解读 今天小编带来Elsevier旗下计算机领域好刊的解读,如有相关领域作者有意向投稿,可作为重点关注!后文有真实发表案例,供您投稿参考~ 01 期刊简介 ☑️出版社:Elsevier ☑️影响因子&#xf…

能源监测管理系统有哪些作用与效果?

随着全球能源的不断增加,能源的有限性与环境问题日益严重,用能管理企业需要一种高效的方法来管理能源与利用能源,因此能源监测管理系统成为了一种不可或缺的工具。 能源监测管理系统的重要性 1、实现节能减排的目标 通过系统,可…

电动汽车充放电V2G模型

威♥关注“电击小子程高兴的MATLAB小屋”获取更多资料 1主要内容 本程序主要建立电动汽车充放电V2G模型,采用粒子群算法,在保证电动汽车用户出行需求的前提下,为了使工作区域电动汽车尽可能多的消纳供给商场基础负荷剩余的光伏电量&#xf…

一例恶搞的样本的分析

概述 这个病毒会将自身伪装成水印标签系统,通过感染桌面和U盘中的后缀名为.doc、.xls、.jpg、.rar的文件来传播。会监听本地的40118端口,预留一个简单的后门,利用这个后门可远程执行锁屏、关机、加密文件、开启文件共享等操作。 样本的基本…

【Azure 架构师学习笔记】-Azure Storage Account(5)- Data Lake layers

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Storage Account】系列。 接上文 【Azure 架构师学习笔记】-Azure Storage Account(4)- ADF 读取Queue Storage 前言 不管在云还是非云环境中, 存储是IT 系统的其中一个核心组件。在…

Educational Codeforces Round 157 (A--D)视频详解

Educational Codeforces Round 157 &#xff08;A--D&#xff09;视频详解 视频链接A题代码B题代码C题代码D题代码 视频链接 Educational Codeforces Round 157 &#xff08;A–D&#xff09;视频详解 A题代码 #include<bits/stdc.h> #define endl \n #define deb(x)…

React 其他常用Hooks

1. useImperativeHandle 在react中父组件可以通过forwardRef将ref转发到子组件&#xff1b;子组件拿到父组件创建的ref&#xff0c;绑定到自己的某个元素&#xff1b; forwardRef的做法本身没有什么问题&#xff0c;但是我们是将子组件的DOM直接暴露给了父组件&#xff0c;某下…

shopee、亚马逊卖家如何安全给自己店铺测评?稳定测评环境是关键

大家都知道通过测评可以提升产品的转化率&#xff0c;提升产品的销量&#xff0c;那么做跨境平台的卖家如何安全的给自己店铺测评呢&#xff1f; 无论是亚马逊、拼多多Temu、shopee、Lazada、wish、速卖通、敦煌网、Wayfair、雅虎、eBay、Newegg、乐天、美客多、阿里国际、沃尔…

【数据结构】树与二叉树(五):二叉树的顺序存储(初始化,插入结点,获取父节点、左右子节点等)

文章目录 5.1 树的基本概念5.1.1 树的定义5.1.2 森林的定义5.1.3 树的术语5.1.4 树的表示 5.2 二叉树5.2.1 二叉树1. 定义2. 特点3. 性质引理5.1&#xff1a;二叉树中层数为i的结点至多有 2 i 2^i 2i个&#xff0c;其中 i ≥ 0 i \geq 0 i≥0。引理5.2&#xff1a;高度为k的二叉…

Flink(一)【WordCount 快速入门】

前言 学完了 Hadoop、Spark&#xff0c;本想着先把 Kafka、Flume 这些工具先学完的&#xff0c;但想了想还是把核心的技术先学完最后再去把那些工具学学。 最近心有点累哈哈哈&#xff0c;偷偷立个 flag&#xff0c;反正也没人看&#xff0c;明年的今天来这里还愿哈&#xff0c…

基于Java Web的在线教学质量评价系统的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

机器学习——回归

目录 一、线性回归 1、回归的概念&#xff08;Regression、Prediction&#xff09; 2、符号约定 3、算法流程 4、最小二乘法&#xff08;LSM&#xff09; 二、梯度下降 梯度下降的三种形式 1、批量梯度下降&#xff08;Batch Gradient Descent,BGD&#xff09;&#xff…

MES系统防呆措施之具体场景学习

在工业设计上&#xff0c;为了避免使用者的操作失误造成机器或人身伤害&#xff08;包括无意识的动作或下意识的误动作或不小心的肢体动作&#xff09;&#xff0c;会针对这些可能发生的情况来做预防措施&#xff0c;称为防呆。对于注塑生产企业来讲&#xff0c;模具亦是企业的…

MinGW32丢失dll文件

问题现象 执行Makefile的时候&#xff0c;突然出现这个提示&#xff0c;还有好几个类似的&#xff0c;提示我找不到dll文件&#xff0c;建议重装。 问题分析 重装软件 最直接的办法肯定是按照建议来重装&#xff0c;但是发现重装了好几次&#xff0c;不是缺这个就是缺那个&a…

Linux多线程【线程池】

✨个人主页&#xff1a; 北 海 &#x1f389;所属专栏&#xff1a; Linux学习之旅 &#x1f383;操作环境&#xff1a; CentOS 7.6 腾讯云远程服务器 文章目录 &#x1f307;前言&#x1f3d9;️正文1.线程池的概念1.1.池化技术1.2.线程池的优点1.3.线程池的应用场景 2.线程池的…

Vue路由使用参数传递数据

一、使用query参数传递数据 &#xff08;一&#xff09;参数的传递 1. 携带参数进行传递 <router-link to"/路径?参数名1参数值1&参数名2参数值2">内容</router-link> 我们在下面的代码中传递每条消息的id和标题&#xff1a; 2. 配置对象进行传递…

运动想象 EEG 信号分析

基于运动想象的公开数据集&#xff1a;Data set IVa (BCI Competition III)1 数据描述参考前文&#xff1a;https://blog.csdn.net/qq_43811536/article/details/134224005?spm1001.2014.3001.5501 本文使用公开数据集 Data set IVa 中的部分被试数据&#xff0c;数据已公开可…

C#在.NET Windows窗体应用中使用LINQtoSQL

目录 一、新建Windows窗体应用并添加LINQtoSQL类 二、错误信息CS0234 三、添加扩展包让Windows窗体应用支持LINQtoSQL类 默认安装的背景下&#xff0c;新建的Windows窗体应用是不支持LINQtoSQL类的。现象是资源管理器里的依赖项中默认的安装不能自动生成支持system.data.lin…