深圳网站开发哪家好/搜索引擎优化的步骤
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 decrement | key所存储的值减去指定的值(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 destination | RPOPLPUSH为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结构:
1 | Message Content | 消息内容 |
2 | Consumer group | 消费组,通过XGROUP CREATE 命令创建,同一个消费组可以有多个消费者 |
3 | Last_delivered_id | 游标,每个消费组会有个游标 last_delivered_id,任意一个消费者读取了消息都会使游标 last_delivered_id 往前移动。 |
4 | Consumer | 消费者,消费组中的消费者 |
5 | Pending_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是否存在。 |
XTRIM | XTRIM将流裁剪为指定数量的项目,如有需要,将驱逐旧的项目(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)中移除待处理条目,因为一旦消息被成功处理,消费者组就不再需要跟踪它并记住消息的当前所有者。 |
XACK | XACK命令用于从流的消费者组的待处理条目列表(简称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
相关文章:

Redis7--基础篇2(Redis的十大数据类型及常用命令)
1. Redis的十大数据类型及常用命令 Redis是key-value键值对类型的数据库,我们所说的数据类型指的是value的数据类型,key的数据类型都是字符串。 1.1 字符串(String) string是redis最基本的类型,一个key对应一个val…...

1.HTML中网页介绍
1.网页 1.1 什么是网页 网站是指在因特网上根据一定的规则,使用HTML等制作的用于展示特定内容的相关的网页集合 网页是网站中的一“页”,通常是HTML格式文件,它要通过浏览器来阅读。 网页是构成网站的基本元素,它通常是有图片&am…...

执行sql报错only_full_group_by的解决方法
一、前言 最近老项目换新数据库(都是mysql),有些在老数据库可以执行的sql,在新数据库执行就会报错sql_modeonly_full_group_by 意思是说数据库的模式是sql_modeonly_full_group_by,group by的字段必须和查询字段一致…...

不学51直接学stm32可以吗?学stm32需要哪些基础?
不学51直接学stm32可以吗?学stm32需要哪些基础? 不管那些大佬技术多么牛逼,大多数入门都是从51单片机开始。 最近有一些入门的小伙伴问我说看到同学都从直接从STM32开始干了。最近很多小伙伴找我,说想要一些stm32的资料ÿ…...

6.1二叉树的递归遍历(LC144,LC15,LC94)
什么是递归函数? 递归函数是一种函数调用自身的编程技巧。 在递归函数中,函数通过不断调用自身来解决一个问题,直到达到基本情况(递归终止条件)并返回结果。 递归函数在解决一些问题时非常有用,特别是那些…...

Spring基础(3):复习
为了让大家更容易接受我的一些观点,上一篇很多笔墨都用在了思路引导上,所以导致文章可能比较臃肿。 这一篇来总结一下,会稍微精简一些,但整体趣味性不如第二篇。 (上一篇说过了,目前介绍的2种注入方式的说法其实不够…...

Java-Hbase介绍
1.1. 概念 base 是分布式、面向列的开源数据库(其实准确的说是面向列族)。HDFS 为 Hbase 提供可靠的 底层数据存储服务,MapReduce 为 Hbase 提供高性能的计算能力,Zookeeper 为 Hbase 提供 稳定服务和 Failover 机制,…...

【PHP】【Too few arguments to function Firebase\JWT\JWT::encode()。。。。。。。】
1.安装jwt composer require firebase/php-jwtuse Firebase\JWT\JWT;public function hello($name ThinkPHP5){$secret_key "YOUR_SECRET_KEY";$issuer_claim "THE_ISSUER";$audience_claim "THE_AUDIENCE";$issuedat_claim time(); // is…...

Centos系统上安装包(软件)时常用的命令wget、rpm、yum分别是什么意思和作用?
本文以在Centos上安装mysql-5.7.26的前三步为例,说明命令wget、rpm、yum的意思和作用。 安装mysql-5.7.26的步骤如下: 下载MySQL 5.7.26的RPM存储库文件: wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm安装R…...

虹科干货 | 旧电脑别急着扔,手把手教你搭建NAS系统存储照片
一、前期准备 我们的目的是让设备物尽其用,将旧电脑做成NAS存储系统后可以使用新电脑进行访问(Windows / Linux / IOS系统都可以访问)。在开始之前先来看看安装成功效果图吧! 1.设备准备 (1)一台旧电脑&am…...

python基础(Python高级特性(切片、列表生成式)、字符串的正则表达式、函数、模块、Python常用内置函数、错误处理)培训讲义
文章目录 1. Python高级特性(切片、列表生成式)a) 切片的概念、列表/元组/字符串的切片切片的概念列表切片基本索引简单切片超出有效索引范围缺省 扩展切片step为正数step为负数 b) 列表生成式以及使用列表生成式需要注意的地方概念举例说明1. 生成一个列…...

计讯物联高精度GNSS接收机:担当小型水库大坝安全监测解决方案的“护航者”
应用背景 水库大坝作为水利工程建筑物,承担着灌溉、发电、供水、生态等重任。一旦水库大坝发生安全事故,后果将不堪设想。因此,水库大坝的安全监测对保障水利工程顺利运行具有重要意义。 计讯物联作为水利行业专家型企业,多年来…...

信号发送与处理-上
问题 按下 Ctrl C 后,命令行中的前台进程会被终止。为什么??? 什么是信号? 信号是一种 "软件中断",用来处理异步事件 内核发送信号到某个进程,通知进程事件的发送事件可能来自硬件…...

[蓝桥杯 2022 省 A] 推导部分和
[蓝桥杯 2022 省 A] 推导部分和 题目描述 对于一个长度为 N N N 的整数数列 A 1 , A 2 , ⋯ A N A_{1}, A_{2}, \cdots A_{N} A1,A2,⋯AN,小蓝想知道下标 l l l 到 r r r 的部分和 ∑ i l r A i A l A l 1 ⋯ A r \sum\limits_{il}^{r}A_iA_{l}A…...

pytorch复现_UNet
什么是UNet U-Net由收缩路径和扩张路径组成。收缩路径是一系列卷积层和汇集层,其中要素地图的分辨率逐渐降低。扩展路径是一系列上采样层和卷积层,其中特征地图的分辨率逐渐增加。 在扩展路径中的每一步,来自收缩路径的对应特征地图与当前特征…...

定岗定编设计:企业职能部门定岗定编设计项目成功案例
一、客户背景及现状分析 某大型车辆公司隶属于某央企集团,建于20世纪60年代,是中国高速、重载、专用铁路车辆生产经营的优势企业,轨道车辆制动机研发制造的主导企业,是隶属于国内最大的轨道交通设备制造上市企业的骨干二级公司。公…...

鸿蒙原生应用开发-DevEco Studio本地模拟器的使用
使用Local Emulator运行应用/服务 DevEco Studio提供的Local Emulator可以运行和调试Phone、TV和Wearable设备的HarmonyOS应用/服务。在Local Emulator上运行应用/服务兼容签名与不签名两种类型的HAP。 Local Emulator相比于Remote Emulator的区别:Local Emulator是…...

QT blockingFilter blockingMap blockingMapped
blockingFilter 主要作用是筛选出符合条件的项值结果集,并与之替换原有序列列表 blockingMap 可以直接修改容器的每一项 blockingMapped 不直接修改容器的每一项,而是将处理后的结果返回一个新的容器 blockingMappedReduced ResultType QtConcurrent::blockingMappedRed…...

【ARFoundation学习笔记】平面检测
写在前面的话 本系列笔记旨在记录作者在学习Unity中的AR开发过程中需要记录的问题和知识点。难免出现纰漏,更多详细内容请阅读原文。 文章目录 平面检测属性可视化平面平面检测的开关控制显示与隐藏已检测平面 平面检测属性 AR中检测平面的原理:AR Fou…...

Python---ljust()--左对齐、rjust()--右对齐、center()--居中对齐
作用:返回原字符串左对齐、右对齐以及居中对齐,不足的使用 指定字符 进行填充。 ljust 左对齐 rjust 右对齐 center 居中对齐 类似于Excel、Word文档中的对齐。 基本语法: 字符串序列.ljust(长度, 填充字符) 案例: …...

spdk用户态块层详解
先通过回顾内核态的通用块层来详细介绍SPDK通用块层,包括通用块层的架构、核心数据结构、数据流方面的考量等。最后描述基于通用块层之上的两个特性:一是逻辑卷的支持,基于通用块设备的Blobstore和各种逻辑卷的特性,精简配置&…...

双通道 H 桥电机驱动芯片AT8833,软硬件兼容替代DRV8833,应用玩具、打印机等应用
上期小编给大家分享了单通道 H 桥电机驱动芯片,现在来讲一讲双通道的驱动芯片。 双通道 H 桥电机驱动芯片能通过控制电机的正反转、速度和停止等功能,实现对电机的精确控制。下面介绍双通道H桥电机驱动芯片的工作原理和特点。 一、工作原理 双通道 H 桥电…...

WPF布局与控件分类
Refer:WPF从假入门到真的入门 - 知乎 (zhihu.com) Refer:WPF从假入门到真的入门 - 知乎 (zhihu.com) https://www.zhihu.com/column/c_1397867519101755392 https://blog.csdn.net/qq_44034384/article/details/106154954 https://www.cnblogs.com/mq0…...

复杂逻辑的开发利器—Mendix快速实现AQL质量抽检
Mendix低代码开发平台适用于复杂的业务逻辑场景,这句话大家早有耳闻,本期小编就为您打开智慧之光,仅从AQL小侧面,来管窥一二——Mendix如何形成第五代编程语言,来完成数据逻辑与建模、业务算法逻辑与建模的。ÿ…...

RFID系统
目录 在物联网应用中有三项关键技术 读写器 电子标签 工作原理 阅读器的组成及作用: 电子标签的组成及作用: RFID系统的组成 接口方式 在物联网应用中有三项关键技术 在物联网应用中有三项关键技术 1、传感器技术:这也是计算机应用中…...

Markov Chain Fingerprinting to Classify Encrypted Traffic 论文笔记
0.Abstract 在本文中,提出了用于SSL/TLS会话中传输的应用程序流量的随机指纹。这个指纹基于一阶齐次马尔可夫链,模型识别应用程序的准确率,并提供了检测异常对话的可能性。 1.Introduction 通过SSL/TLS会话时的头部信息创建统计指纹ÿ…...

vue 跨标签页的数据共享(即跨标签页通信)
跨标签页通信的常见方案 LocalStorage 或 SessionStorage BroadCast Channel Service Worker Shared Worker Window.postMessage() Cookies IndexedDB 什么是跨标签页通信? 指在同一个浏览器窗口中的多个标签页之间进行数据交流和信息传递的过程。通常情况…...

什么是拉宾-斯科特定理?
拉宾-斯科特定理(Rabin-Scott theorem )是数学上最深刻的数学结果之一。拉宾-斯科特定理是人们最喜欢的计算机科学概念之一。 当正确理解拉宾-斯科特定理时,它会以一种相当基本的方式改变你对现实的看法。然而,它典型的教科书式的呈现方式掩盖了这种深…...

Java并发编程第11讲——AQS设计思想及核心源码分析
Java并发包(JUC)中提供了很多并发工具,比如前面介绍过的ReentrantLock、ReentrantReadWriteLock、CountDownLatch、Semaphore、FutureTask等锁或者同步部件,它们的实现都用到了一个共同的基类——AbstractQueuedSynchronizer&…...

什么是数据库?数据库有哪些基本分类和主要特点?
数据库是以某种有组织的方式存储的数据集合。本文从数据库的基本概念出发,详细解读了数据库的主要类别和基本特点,并就大模型时代备受瞩目的数据库类型——向量数据库进行了深度剖析,供大家在了解数据库领域的基本概念时起到一点参考作用。 …...