Redis 常用命令

目录

全局命令

1)keys

2)exists

3) del(delete)

4)expire

5)type

SET命令

GET命令

MSET 和 MGET命令

其他SET命令

计数命令

redis-cli,进入redis

最核心的命令:我们这里只是先介绍 set 和 get 最简单的操作,后面有详细介绍

set: 存储 key 和 value

get: 根据 key 来取 value

key 和 value 的类型都是字符串

Redis 常用命令_第1张图片

get 查询不存在的值会返回一个 nil

Redis 常用命令_第2张图片

全局命令

1)keys

用来查询当前服务器上的匹配的 key

通过一下特殊符号(通配符)来描述 key 的模样,匹配上述模样的 key 就会被查出来。

keys pattern,pattern 是包含特殊符号的字符串。

pattern 所支持的统配样式:

“?” 可以匹配任意一个字符

Redis 常用命令_第3张图片

“ * ” 匹配 0 个或者多个任意字符

Redis 常用命令_第4张图片

keys * 可以查询所有的 key

[ae] 只能匹配到 a/e 两个字符之一

Redis 常用命令_第5张图片

[^e] 表示排除 e ,除了 e 之外可以匹配其他字符

Redis 常用命令_第6张图片

[a-e] 匹配 a - e 范围内的字符,包含 a 和 e

Redis 常用命令_第7张图片

注意:keys 的时间复杂度是 O(N)。在生产环境上,一般都会禁止使用 keys 命令。

2)exists

判定 key 是否存在。

exists key [key ...],返回值:返回 key 存在的个数

时间复杂度:O(N),此处的 N 是检查的 key 的个数

Redis 常用命令_第8张图片

3) del(delete)

删除指定的 key,可以一次删除一个或者多个

del key [key ...], 返回值:返回删除 key 的个数

时间复杂度:O(N),此处的 N 是成功删除的 key 的个数

Redis 常用命令_第9张图片

4)expire

给指定的 key 设置过期时间,key 存活时间超过这个指定的值,就会被自动删除。

expire key seconds, expire 设置的时间单位是 秒。pexpire key 毫秒, pexpire 设置的时间单位是毫秒

Redis 常用命令_第10张图片

返回 0 表示设置失败,1 表示设置成功。

时间复杂度:O(1)。

ttl(time to live) 查询 key 的过期时间,单位秒。pttl 和 pexpire 搭配使用。

Redis 常用命令_第11张图片


时间复杂度:O(1)。

返回值:剩余过期时间;-1 表示么有设置过期时间;-2 表示 key 不存在。

redis 的过期策略是怎么实现的?

如果直接遍历所有的 key,显然是不可能的,所有redis 采取了两种方式相结合:

1.定期删除

每隔一定时间,抽取一部分 key 检查是否到达删除时间,每次抽取一部分可以有效保证效率,不会浪费太多时间。 如果扫描过期 key 消耗的时间太多了,就可能会导致正常处理请求命令就阻塞了。

2.惰性删除

假设这个 key 已经到了过期时间,但是暂时还没有将其删除,key 依然存在,接下来再访问该 key 的时候,就会触发 redis 的删除操作,同时返回一个 nil。

redis 为了应对上述策略,还提供了一系列的内存淘汰策略。

5)type

type key,返回 key 对应的 value 的数据类型。

Redis 常用命令_第12张图片

SET命令

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

NX:如果 key 不存在,才设置,如果 key 存在,则不设置(返回nil)

XX:如果 key 存在,才设置(相当于更新 key 的 value),如果 key 不存在,则不设置(返回nil)

EX:设置过期时间,单位秒

PS:设置过期时间,单位毫秒

EXAT:设置 key 过期的指定 Unix 时间(以秒为单位)

PXAT:设置 key 过期的指定 Unix 时间(以毫秒为单位)

KEEPTTL:保存与 key 相关联的生存时间

set key value ex 10,就相当于set key value 和 expire key 10

Redis 常用命令_第13张图片

Redis 常用命令_第14张图片

因为 key2 已经过期了,所以我们在设置 key2 时加上 NX,成功设置 key2。由于 key1 已经存在,所以加上 NX 会返回一个 nil。

GET命令

GET key,需要注意的是,GET 只能获取到字符串类型的 value,如果 value 是其他类型,使用 GET 获取就会出错!

Redis 常用命令_第15张图片

MSET 和 MGET命令

MSET key value [key value],MSET 可以设置多组键值对,MGET key key,MGET 可以获取多个 key 的 value。

Redis 常用命令_第16张图片

MSET 和 MGET 的时间复杂度都是 O(N),N为 key 的个数。

其他SET命令

SETNX:不存在才能设置,存在则设置失败。

Redis 常用命令_第17张图片

SETEX:设置 key 的过期时间(以秒为单位)

PSETEX:设置 key 的过期时间(以毫秒为单位)

Redis 常用命令_第18张图片

计数命令

incr 针对 value + 1

INCR key,此时 key 对应的 value 必须是整数。

返回值:原 value +1 的结果

Redis 常用命令_第19张图片

无论是字符串还是小数,还是太大的数(超出规定范围),都不能完成该操作

Redis 常用命令_第20张图片

如果 incr 操作的 key 不存在,那么就会将这个 key 默认为0来操作

Redis 常用命令_第21张图片

incrby 针对 value + n

INCRBY key increment,incrby 的使用规则和 incr 一样,都只能对整数使用,我们就不再进行演示了。

Redis 常用命令_第22张图片

incrby 不仅仅可以加一个正数,还能够加负数

Redis 常用命令_第23张图片

decr 针对 value + 1

DECR key

返回值:返回 value-1 后的结果

Redis 常用命令_第24张图片

对一个不存在的 key 进行该操作,同样默认该 key 的 value 为0

Redis 常用命令_第25张图片

decrby 针对 value - n

DECRBY key decrement

Redis 常用命令_第26张图片

incrbyfloat

incrbyfloat key increment,把 key 对应的 value 进行 + - 运算,运算的操作数可以是浮点数

Redis 常用命令_第27张图片

注意:Redis 中不存在 decrbyfloat,只能通过 incrbyfloat+ 负数来实现减法

你可能感兴趣的:(redis,数据库,缓存)