Redis10大数据类型


Redis键(key)

命令用途
keys *查看当前库所有的key
exists key判断某个key是否存在
type key查看你的key是什么类型
del key删除指定的key数据
unlink key非阻塞删除,仅仅将keys从keyspace元数据中州除,真正的删除会在后续异步中操作。
ttl key查看还有多少秒过期,-1表示永不过期-2表示已过期
expire key 秒钟为给定的key设置过期时间B
move key dbindex 【0-15】将当前数据库的 key移动到给定的数据库db 当虫
select dbindex切换数据库【0-15】,默认为0
dbsize查看当前数据库key的数量
flushdb清空当前库
flushall通杀全部库

一、Redis字符串(string)

在这里插入图片描述

1、最常用的

set key value [NX|XX] [GET] [EX seconds|PX milliseconds|EXAT unix-time-seconds|PXAT unix-time-milliseconds|KEEPTTL]

  • Ex seconds:以秒为单位设置过期时间
  • Fx milliseconds:以毫秒为单位设置过期时间
  • BXAT time stamg:设置以秒为单位的UNIx时间戳所对应的时间为过期时间
  • PXAI milliseconds-timestamp:设置以毫秒为单位的UNIx时间戳所对应的时间为过期时间
  • NX:键不存在的时候设置键值
  • XX:键存在的时候设置键值
  • KEEPTTI:保留设置前指定键的生存时间
  • GET:返回指定键原本的值,若键不存在时返回nil
命令解释
SET key value设置指定 key 的值
GET key获取指定key 的值。
GETRANGE key start end返回 key 中字符串值的子字符
GETSET key value将给定 key 的值设为 value,并返回 key 的旧值(old value)。
GETBIT key offset对key 所储存的字符串值,获取指定偏移量上的位(bit)。
MGET key1 [key2]获取所有(一个或多个)給定 key 的值。
SETBIT key offset value对key 所储存的字符串值,设置或清除指定信移量上的位(bit)。
SETEX key seconds value将值 value 关联到key,并将 key 的过期时间设为 seconds(以秒为单位)。
SETNX key value只有在 key 不存在时设置 key 的值。
SETRANGE key offset value用 value 参数覆写给定 key 所储存的字符牢值,从信移量 offiset 开始。
STRLEN key返回 key 所储存的字符串值的长度。
MSET key value [key value ..]同时设置一个或多个 key-value 对。
MSETNX key value [key value]同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。
PSETEX key milliseconds value这个命令和 SETEX 命令相似,但它以毫秒为单位设置 key 的生存时间,而不是像 SETEX 命令那样,以秒为单位。
INCR key将key 中储存的数字值增一。
INCRBY key increment将 key 所情存的值加上给定的增量值(increment )
INCRBYFLOAT key increment将 key 所储存的值加上给定的浮点增量值 increment
DECR key将 key 中情存的数字值减一。
DECRBY key decrementkey 所储存的值减去给定的减量值(decrement
APPEND key value如果 key 已经存在并且是一个字符串,APPEND 命令将 value 追加到 key 原来的值的未尾。

MSETNX key value [key value]中所有给定的key都不能存在,一半存在一半不存在也会失败

2、获取指定区间范围内的值

getrang/setrang

在这里插入图片描述

3、数值增减

需求命令
递增数字INCR key
增加指定的整数INCRBY key increment
递减数值DECR key
减少指定的整数DECRBY key decrement

注意:一定要是数字才能进行加减

4、获取字符串长度和内容追加

  • STRLEN key
  • APPEND key value
    在这里插入图片描述

5、分布式锁(基础)

setnx key value
setex(set with expire)键秒值/setnx(set if not exist)

set key value [EX seconds] [PX milliseconds] [NX|XX]

  • EX:key在多少秒之后过期
  • PX: key在多少毫秒之后过期
  • NX:当key不存在的时候,才创建key,效果等同于setnx
  • XX:当key存在的时候,覆盖key

6、getset

先get再set
在这里插入图片描述

二、Redis列表(List)

在这里插入图片描述

1、常用

命令解释
BLPOP [key1 /key2]timeout移出并获取列表的第一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
BRPOP [key1/key2] timeout移出并获取列表的最后一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
BRPOPLPUSH source destination timeout从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它:如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
LINDEX key index通过素引获取列表中的元素
LINSERT key BEFORE\AFTER pivot value在列表的元素前或者后插入元素
LLEN key获取列表长度
LPOP key移出并获取列表的第一个元素
LPUSH key value1 [value2]将一个或多个值插入到列表头部
LPUSHX key value将一个或多个值插入到已存在的列表头部
LRANGE key start stop获取列表指定范围内的元素
LREM key count value移除列表元素
LSET key index value通过素引设置列表元素的值
LTRIM key start stop对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。
RPOP key移除并获取列表最后一个元素
RPOPLPUSH source destination移除列表的最后一个元素,并将该元素添加到另一个列表并返回
RPUSH key value1 [value2]在列表中添加一个或多个值
RPUSHX key value为已存在的列表添加值

2、底层原理

一个双端链表的结构,容量是2的32次方减1个元素,大概40多亿,主要功能有push/pop等,一般用在栈、队列、消息队列等场景。

left、right都可以插入添加;

如果键不存在,创建新的链表;

如果键已存在,新增内容;

如果值全移除,对应的键也就消失了。

  • 它的底层实际是个双向链表,对两端的操作性能很高,通过索引下标的操作中间的节点性能会较差。

3、lpush\rpush\lrange

从从左、又向List中存值,lrange从左遍历List中的元素,没有从右遍历(无rrange)
在这里插入图片描述

4、lpop\rpop、lindex、len

从左、右将List中元素弹出
在这里插入图片描述

  • lindex:按照索引下标获得元素(从上到下)
  • llen:获取列表中元素的个数

5、Irem key

数字N 给定值v1 解释(删除N个值等于v1的元素)
在这里插入图片描述

6、Itrim Key

开始index 结束index,截取指定范围的值后再赋值给key
在这里插入图片描述

7、rpoplpush

将第一个列表(源列表)最后一个值加到第二个列表(目的列表)的第一个
在这里插入图片描述

8、Iset key index value

在这里插入图片描述

9、linsert key before/after

linsert key before/after 已有值 插入的新值

在这里插入图片描述

三、Redis哈希(Hash)

在这里插入图片描述

KV模式不变,但V是个键值对(套娃)

1、常用

命令解释
HDEL key field2 [field2]删除一个或多个哈希表字段
HEXISTS key field直看哈希表key 中,指定的字段是否存在。
HGET key field获取存储在哈希表中指定字段的值rd>
HGETALL key获取在哈希表中指定 key 的所有字段和值
HINCRBY key field increment为哈希表key 中的指定字段的整效值加上增量 increment。
HINCRBYFLOAT key field increment为哈希表 key 中的指定字段的浮点数值加上增量 increment。
HKEYS key获取所有哈希表中的字段
HLEN key获取哈希表中字段的数量
HMGET key field1 [field2]获取所有给定字段的值
HMSET key field1 value1 [field2 value2 ]同时将多个 field-value(域-值)对设置到哈希表key 中。
HSET key field value将哈希表key 中的字段feld 的值设为 value。
HSETNX key field value只有在字段 feld 不存在时,设置哈希表字段的值。
HVALS key获取哈希表中所有值
HSCAN key cursor [MATCH pattern] [COUNT count]迭代哈希表中的键值对。

2、hset/hget/hmset/hmget/hgetall/hdel

在这里插入图片描述

3、hlen

获取某个key内部的全部数量
在这里插入图片描述

4、hexists key

查看key里面是否存在某个key,存在返回1
在这里插入图片描述

5、hkeys/hvals

在这里插入图片描述

6、hincrby/hincrbyfloat

在这里插入图片描述

7、hsetnx

在这里插入图片描述

四、Redis集合(set)

在这里插入图片描述

单值多value,且无重复

1、常用

命令解释
SADD key member1 [member2]向集合添加一个或多个成员
SCARD key获取集合的成员数
SDIFF key1 [key2]返回给定所有集合的差集
SDIFFSTORE destination key1 [key2]返回给定所有集合的差集并存储在 destination 中
SINTER key1 [key2]返回给定所有集合的交集
SINTERSTORE destination key1 [key2]返回给定所有集合的交集并存储在 destination 中
SISMEMBER key member判断 member 元素是否是集合 key 的成员
SMEMBERS key返回集合中的所有成员
SMOVE source destination member将member 元素从 source 集合移动到 destination 集合
SPOP kev移除并返回集合中的一个随机元素
SRANDMEMBER key [count]返回集合中一个或多个随机数
SREM key member1 [member2]移除集合中一个或多个成员
SUNION key1 [key2]返回所有给定集合的并集
SUNIONSTORE destination key1 [key2]所有给定集合的并集存储在 destination 集合中
SSCAN key cursor [MATCH pattern] [CQUNT count]送代集合中的元素

2、增删改查

  • SADD key member [member…] 添加元素
  • SMEMBERS key 遍历集合中的所有元素
  • SISMEMBER key member 判断元素是否在集合中
  • SREM key member [member …] 删除元素
  • scard:获取集合里面的元素个数D

在这里插入图片描述

3、SRANDMEMBER key [数字]

从集合中随机展现设置的数字个数元素,元素不删除
在这里插入图片描述

4、SPOP key [数字]

从集合中随机弹出一个元素,出一个删一个
在这里插入图片描述

5、smove key1 key2

在key1里已存在的某个值D,将key1里已存在的某个值赋给key2
在这里插入图片描述

6、集合运算

  • 集合的差集运算 A-B:属于A但不属于B的元素构成的集合
  • SDIFF key [key…]

在这里插入图片描述

  • 集合的并集运算A U B:属于A或者属于B的元素合并后的集合
  • SUNION key [key…]

在这里插入图片描述

  • 集合的交集运算AnB:属于A同时也属于B的共同拥有的元素构成的集合
  • SINTER key [key …]
  • SINTERCARD numkeys key [key …] [LIMIT limit]
    • redis7新命令
    • 它不返回结果集,而只返回结果的基数。返回由所有给定集合的交集产生的集合的基数

在这里插入图片描述

五、Redis有序集合Zset(sorted set)

在这里插入图片描述

在set基础上,每个val值前加一个score分数值。之前set是k1 v1 v2 v3,现在zset是k1 score1 v1 score2 v2

1、常用

命令解释
ZADD key score1 member1 [score2 member2]向有序集台添加一个或多个成员,或者更新已存在成员的分数
ZCARD key获取有序集合的成员数
ZCOUNT key min max计算在有序集合中指定区间分数的成员数
ZINCRBY key increment member有序集合中对指定成员的分数加上增量 increment
ZINTERSTORE destination numkeys key [key]计算给定的一个或多个有序集的交集并将结果集存情在新的有序集合 key 中
ZLEXCOUNT key min max在有序集合中计算指定字典区间內成员数量
ZRANGE key start stop [WITHSCORES]通过素引区间返回有序集合成指定区间内的成员
ZRANGEBYLEX key min max [LIMIT offset count]通过字典区间返回有序集合的成员
ZRANGEBYSCORE key min max [WITHSCORES][LIMIT]通过分数返回有序集合指定区间內的成员
ZRANK key member返回有序集合中指定成员的素引
ZREM key member [member]移除有序集合中的一个或多个成员
ZREMRANGEBYLEX key min max移除有序集合中给定的字典区间的所有成员
ZREMRANGEBYRANK key start stop移除有序集合中给定的排名区间的所有成员
ZREMRANGEBYSCORE key min max移除有序集合中给定的分数区间的所有成员
ZREVRANGE key start stop [WITHSCORES]返回有序集中指定区间内的成员,通过素引,分数从高到底
ZREVRANGEBYSCORE key max min [WITHSCORES]返回有序集中指定分数区间内的成员,分数从高到低排序
ZREVRANK key member返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小排序)
ZSCORE key member返回有序集中,成员的分数值
ZUNIONSTORE destination numkeys key [key…]计算给定的一个或多个有序集的并集,并存储在新的key 中
ZSCAN key cursor [MATCH patter] [COUNT [count]迭代有序集合中的元素(包括元素成员和元素分值)

2、添加和遍历

添加元素

ZADD key score member [score member...] 

按照元素分数从小到大的顺序返回索引从start到stop之间的所有元素

ZRANGE key start stop [WITHSCORES] 

在这里插入图片描述
反转排序
在这里插入图片描述

3、获取指定分数范围的元素

ZRANGEBYSCORE key min max [WITHSCORESI [LIMIT offset count]
  • withscores:带着value一起遍历
  • 的意思表示不包括
  • limit作用是返回限制,类似于MySQL中的分页
    在这里插入图片描述

4、增删改查

  • 获取元素的分数
ZSCORE key member

在这里插入图片描述

  • 获取集合中元素的数量
ZCARD key

在这里插入图片描述

  • 删除某个元素
Zrem key 某score下对应的value值

在这里插入图片描述

  • 增加某个元素的分数
ZINCRBY key increment member

在这里插入图片描述

  • 获取指定分数范围的元素个数
ZCOUNT key min max

在这里插入图片描述

5、ZMPOP(New in 7.0)

从键名列表中的第一个非空排序集中弹出一个或多个元素,它们是成员分数对

在这里插入图片描述

6、获得下标值

  • zrank key values值,作用是获得下标值
  • zrevrank key values值,作用是逆序获得下标值
    在这里插入图片描述

六、Redis位图(bitmap)

在这里插入图片描述

1、简介

在这里插入图片描述

  • 用String类型作为底层数据结构实现的一种统计二值状态的数据类型
  • 位图本质是数组,它是基于String数据类型的按位的操作。该数组由多个二进制位组成,每个二进制位都对应一个偏移量(我们称之为一个索引)。
  • Bitmap支持的最大位数是2的32次方位,它可以极大的节约存储空间,使用512M内存就可以存储多达42.9亿的字节信息(2^32 = 4294967296)

常用

命令作用时间复杂度
setbit key offset val给指定key的值的第offset赋值valO(1)
getbit key offset获取指定key的第offset位O(1)
bitcount key start end返回指定key中[start,end]中为1的数量O(n)
bitop operation destkey key对不同的二进制存储数据进行位运算(AND、 OR、 NOT、XOR)O(n)

2、setbit

setbit key offset value
  • setbit 键 偏移位 只能零或者1
  • Bitmap的偏移量是从零开始算的

在这里插入图片描述

3、getbit

getbit key offset

在这里插入图片描述

4、统计字节数占多少

STRLEN key

在这里插入图片描述

不是字符串长度而是占据几个字节,超过8位后自己按照8位一组一byte再扩容

5、bitcount

统计全部键里面含有1的数量
在这里插入图片描述

6、bitop

bitop operation destkey key

七、Redis基数统计(HyperLogLog)

在这里插入图片描述

统计某个往回走哪的UV(Unique Visitor:独立访客/用户端IP)、统计某个文章的UV、统计搜索网站关键词的数量、统计用户没天搜索不同的词条个数

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

1、常用

命令解释
PFADD key element [element… ]添加指定元表到 HyperLogLog 中。
PFCQUNT key [key]返回给定 HyperLogLog 的基数估算值。
PFMERGE destkey sourcekey [sourcekey…]将多个 HyperLogLog 合并为一个 HyperLogLog

在这里插入图片描述

八、Redis地理空间(GEO)

在这里插入图片描述

1、geoadd

geoadd 用于存储指定的地理空间位置,可以将一个或多个经(longitude)、纬度(latitude)、位置名称(member)添加到指定的 key 中。

geoadd 语法格式如下:

GEOADD key longitude latitude member [longitude latitude member ...]

在这里插入图片描述

可以看出类型为zset,在遍历时出现中文乱码问题,quit退出Redis,输入redis-cli -a 1234 --raw后再次进入重新遍历
在这里插入图片描述

2、geopos

geopos用于从给定的key里返回所有指定名称(member)的位置(经度和纬度),不存在的返回nill。

geopos 语法格式如下:

GEOPOS key member [member ...]

在这里插入图片描述

3、geohash

  • Redis GEO 使用 geohash 来保存地理位置的坐标。
  • geohash 用于获取一个或多个位置元素的 geohash 值。

geohash 语法格式如下:

GEOHASH key member [member . . .]

在这里插入图片描述

4、geodist

  • geodist 用于返回两个给定位置之间的距离。

geodist 语法格式如下:

GEODIST key member1 member2 [mlkm /ft/mi]

在这里插入图片描述

5、georadius

georadius 以给定的经纬度为中心, 返回键包含的位置元素当中, 与中心的距离不超过给定最大距离的所有位置元素。
在这里插入图片描述

  • WITHDIST: 在返回位置元素的同时, 将位置元素与中心之间的距离也一并返回。 距离的单位和用户给定的范围单位保持一致。
  • WITHCOORD: 将位置元素的经度和维度也一并返回。
  • WITHHASH: 以 52 位有符号整数的形式, 返回位置元素经过原始geohash 编码的有序集合分值。 这个选项主要用于底层应用或者调试, 实际中的作用并不大COUNT 限定返回的记录数。

九、Redis流(stream)

在这里插入图片描述

Redis流(stream)实现消息队列,它支持消息的持久化、支持自动生成全局唯一ID、支持ack确认消息的模式、支持消费组模式等,让消息队列更加的稳定和可靠

1、底层原理

在这里插入图片描述

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

2、队列相关指令

指令名称指令作用
XADD添加消息到队列末尾
XTRIM限制Stream的长度,如果己经超长会进行截取
XDEL删除消息
XLEN获取Stream中的消息长度
XRANGE获取消息列表(可以指定范围),忽略删除的消息
XREVRANGE和XRANGE相比区别在于反向获取,1D从大到小
XREAD获取消息(阻塞/非阻塞),返回大于指定ID的消息

XADD

XADD 用于向Stream 队列中添加消息,如果指定的Stream 队列不存在,则该命令执行时会新建一个Stream 队列
* 号表示服务器自动生成 MessageID(类似mysql里面主键auto_increment),后面顺序跟着一堆 业务key/value

  • 消息ID必须要比上个ID大
  • 默认用星号表示自动生成规矩

在这里插入图片描述

信息条目指的是序列号,在相同的毫秒下序列号从0开始递增,序列号是64位长度,理论上在同一毫秒内生成的数据量无法到达这个级别,因此不用担心序列号会不够用。millisecondsTime指的是Redis节点服务器的本地时间,如果存在当前的毫秒时间戳比以前已经存在的数据的时间戳小的话(本地时间钟后跳),那么系统将会采用以前相同的毫秒创建新的ID,也即redis 在增加信息条目时会检查当前 id 与上一条目的 id, 自动纠正错误的情况,一定要保证后面的 id 比前面大,一个流中信息条目的ID必须是单调增的,这是流的基础。

客户端显示传入规则:
Redis对于ID有强制要求,格式必须是时间戳-自增Id这样的方式,且后续ID不能小于前一个ID

Stream的消息内容,也就是图中的Message Content它的结构类似Hash结构,以key-value的形式存在。

XRANGE\XREVRANGE\XDEL

  • 用于获取消息列表(可以指定范围),忽略删除的消息
  • start 表示开始值,-代表最小值
  • end 表示结束值,+代表最大值
  • count 表示最多获取多少个值
    在这里插入图片描述
  • XREVRANGE
    与XRANGE 的区别在于,获取消息列表元素的方向是相反的,end在前,start在后
  • XDEL
    在这里插入图片描述

XTRIM

  • 用于对Stream的长度进行截取,如超长会进行截取
  • MAXLEN
    允许的最大长度,对流进行修剪限制长度目
  • MINID
    允许的最小id,从某个ia值开始比该id值小的将会被抛弃

XREAD

  • 用于获取消息(阻塞/非阻塞),只会返回大于指定ID的消息
XREAD [COUNT count][ BLOCK milliseconds]STREAMS key [key .. ]ID [ID..]
COUNT 最多读取多少条消息
BLOCK 是否已阻塞的方式读取消息,默认不阻塞,如果milliseconds设置为0,表示永远阻塞
  • 非阻塞
    • $代表特殊ID,表示以当前Stream已经存储的最大的ID作为最后一个ID,当前Stream中不存在大于当前最大ID的消息,因此此时返回nil
    • 0-0代表从最小的ID开始获取Stream中的消息,当不指定count,将会返回Stream中的所有消息,注意也可以使用0(00/000也都是可以的……)
  • 阻塞
    在这里插入图片描述

总结

Stream的基础方法,使用xadd存入消息和xread循环阻塞读取消息的方式可以实现简易版的消息队列,交互流程如下
在这里插入图片描述

3、消费组相关指令

指令名称指令作用
XGROUP CREATE创建消费者组
XREADGROUP GROUP读取消费者组中的消息
XACKack消息,消息被标记为"已处理”
XGROUP SETID设置消费者组最后递送消息的1D
XGROUP DELCONSUMER删除消费者组
XPENDING打印待处理消息的详细信息
XCLAIM转移消息的归展权(长期未被处理/无法处理的消息,转交给其他消费者组进行处理)
XINFO打印StreamIConsumerlGroup的详细信息
XINFO GROUPS打印消费者组的详細信息
XINFO STREAM打印Stream的详细信息

XGROUP

在这里插入图片描述

  • $表示从Stream尾部开始消费

  • 0表示从Stream头部开始消费

  • 创建消费者组的时候必须指定 ID, ID 为 0 表示从头开始消费,为 $ 表示只消费新的消息,队尾新来

XREADGROUP GROUP

  • “>”,表示从第一条尚末被消费的消息开始读取

  • 消费组groupA内的消费者consumerl从mystream消息队列中读取所有消息
    在这里插入图片描述

  • 但是,不同消费组的消费者可以消费同一条消息 B
    在这里插入图片描述

  • 让组内的多个消费者共同分担读取消息,所以,我们通常会让每个消费者读取部分消息,从而实现消息读取负载在多个消费者间是均衡分布的
    在这里插入图片描述

重点问题

问题:基于 Stream 实现的消息队列,如何保证消费者在发生故障或宕机再次重启后,仍然可以读取未处理完的消息?

  • Streams 会自动使用内部队列(也称为 PENDING List)留存消费组里每个消费者读取的消息保底措施,直到消费者使用 XACK 命令通知 Streams“消息已经处理完成”。

  • 消费确认增加了消息的可靠性,一般在业务处理完成之后,需要执行 XACK 命令确认消息已经被消费完成
    在这里插入图片描述

XPENDING

  • 查询每个消费组内所有消费者「已读取、但尚未确认」的消息
    在这里插入图片描述

  • 查看某个消费者具体读取了哪些数据
    在这里插入图片描述
    下面抓图所示:consumer2已读取的消息的 ID是1659430293537-0
    一旦消息1659430293537-0被consumer2处理了consumer2就可以使用 XACK 命令通知 Streams,然后这条消息就会被删除
    在这里插入图片描述

XACK

在这里插入图片描述
在这里插入图片描述

向消息队列确认消息处理已完成

4、四个特殊符号

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

十、Redis位域(bitfield)

BITFIELD 命令的作用在于它能够将很多小的整数储存到一个长度较大的位图中,又或者将一个非常庞大的键分割为多个较小的键来进行储存,从而非常高效地使用內存,使得 Redis 能够得到更多不同的应用——特别是在实时分析领域:BITFIELD 能够以指定的方式对计算溢出进行控制的能力,使得它可以被应用于这一领域。

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

1、常用命令

BITFIELD key [GET type offset]
在这里插入图片描述

BITFIELD key [SET type offset value]
在这里插入图片描述

BITFIELD key [NCRBY type offset increment]
在这里插入图片描述

2、溢出控制OVERFLOW [WRAPISAT FAIL]

  • WRAP:使用回绕(wrap around)方法处理有符号整数和无符号整数的溢出情况
    在这里插入图片描述

  • SAT: 使用饱和计算 (saturation arithmetic)方法处理溢出,下溢计算的结果为最小的整数值,而上溢计算的结果为最大的整数值
    在这里插入图片描述

  • FAIL: 命令将拒绝执行那些会导致上溢或者下溢情况出现的计算,并向用户返回空值表示计算未被执行
    在这里插入图片描述

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wangkay88

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值