redis cli笔记

此篇为人个笔记,基本是个人常用命令,仅供参考。

基础操作

$ redis-cli
redis 127.0.0.1:6379> ping
PONG
redis 127.0.0.1:6379> set mykey somevalue
OK
redis 127.0.0.1:6379> get mykey
"somevalue"

为了方便代码复制,后面的代码中就不在包含redis 127.0.0.1:6379> 部分了。所有的操作都在这里进行。

命令查找

https://redis.io/commands/

查询所有的keys

https://redis.io/commands/keys/
返回所有匹配的键pattern。虽然此操作的时间复杂度为 O(N),但常数时间相当低。例如,在入门级笔记本电脑上运行的 Redis 可以在 40 毫秒内扫描 100 万个密钥数据库。

  • h?llo matches hello, hallo and hxllo
  • h*llo matches hllo and heeeello
  • h[ae]llo matches hello and hallo, but not hillo
  • h[^e]llo matches hallo, hbllo, … but not hello
  • h[a-b]llo matches hallo and hbllo
redis:6379> MSET firstname Jack lastname Stuntman age 35
"OK"
redis:6379> KEYS *name*
1) "lastname"
2) "firstname"
redis:6379> KEYS a??
1) "age"
redis:6379> KEYS *
1) "lastname"
2) "firstname"
3) "age"
redis:6379> 

SET设置key值

设置key为保存字符串value。如果key已经保存了一个值,则无论其类型如何,都会将其覆盖。任何先前与该键关联的生存时间在成功SET操作时都将被丢弃。
https://redis.io/commands/set/

选项

该SET命令支持一组修改其行为的选项:

  • EX seconds – 设置指定的过期时间,以秒为单位。
  • PX 毫秒——设置指定的过期时间,以毫秒为单位。
  • EXAT timestamp-seconds – 设置密钥过期的指定 Unix 时间,以秒为单位。
  • PXAT timestamp-milliseconds – 设置密钥过期的指定 Unix 时间,以毫秒为单位。
  • NX-- 仅当密钥不存在时才设置它。
  • XX-- 仅当密钥已存在时才设置它。
  • KEEPTTL-- 保留与密钥关联的生存时间。
  • GET-- 返回存储在 key 中的旧字符串,如果 key 不存在,则返回 nil。SET如果存储在 key 的值不是字符串,则返回并中止错误。
    注意:由于SET命令选项可以替换SETNX, SETEX, PSETEX, GETSET,因此在未来的 Redis 版本中,这些命令可能会被弃用并最终被删除。

示例

redis:6379> SET mykey "Hello"
"OK"
redis:6379> GET mykey
"Hello"
redis:6379> SET anotherkey "一分钟以后过期" EX 60
"OK"
redis:6379> 
Powered by

GET

获取 的值key。如果键不存在,nil则返回特殊值。如果存储的值key不是字符串,则返回错误,因为GET 只处理字符串值。

示例

redis:6379> GET nonexisting
(nil)
redis:6379> SET mykey "Hello"
"OK"
redis:6379> GET mykey
"Hello"
redis:6379> 

EXPIRE设置key过期时间

设置超时key。超时后,密钥将被自动删除。在 Redis 术语中,具有关联超时的键通常被称为volatile 。
https://redis.io/commands/expire/

示例

redis:6379> SET mykey "Hello"
"OK"
redis:6379> EXPIRE mykey 10
(integer) 1
redis:6379> TTL mykey
(integer) 10
redis:6379> SET mykey "Hello World"
"OK"
redis:6379> TTL mykey
(integer) -1
redis:6379> EXPIRE mykey 10 XX
(integer) 0
redis:6379> TTL mykey
(integer) -1
redis:6379> EXPIRE mykey 10 NX
(integer) 1
redis:6379> TTL mykey
(integer) 10
redis:6379> 

TTL查询key过期时间

https://redis.io/commands/ttl/
返回具有超时的键的剩余生存时间。这种自省功能允许 Redis 客户端检查给定键将继续成为数据集的一部分的秒数。

在 Redis 2.6 或更早版本中,-1如果密钥不存在或密钥存在但没有关联的过期时间,则该命令返回。

示例

redis:6379> SET mykey "Hello"
"OK"
redis:6379> EXPIRE mykey 10
(integer) 1
redis:6379> TTL mykey
(integer) 10
redis:6379> 

查询数据库列表

没有命令可以执行此操作(例如,您将使用 MySQL 执行此操作)。Redis 数据库的数量是固定的,并在配置文件中设置。默认情况下,您有 16 个数据库。每个数据库都由一个数字(不是名称)标识。

您可以使用以下命令来了解数据库的数量:

config get databases

https://stackoverflow.com/questions/12802726/how-to-list-all-redis-databases

查询每个数据库的使用情况:

INFO keyspace
# Keyspace
db0:keys=27,expires=0,avg_ttl=0
db1:keys=1,expires=0,avg_ttl=0

PERSIST key 让key永不过期

https://redis.io/commands/persist/
删除现有的 timeout on key,将密钥从volatile(设置了过期时间的密钥)变为持久性(由于没有关联超时而永不过期的密钥)。

示例

redis:6379> SET mykey "Hello"
"OK"
redis:6379> EXPIRE mykey 10
(integer) 1
redis:6379> TTL mykey
(integer) 10
redis:6379> PERSIST mykey
(integer) 1
redis:6379> TTL mykey
(integer) -1
redis:6379> 

FLUSHDB 删除所有key

删除当前选定数据库的所有键。这个命令永远不会失败。

默认情况下,FLUSHDB将同步刷新数据库中的所有键。从 Redis 6.2 开始,将lazyfree-lazy-user-flush配置指令设置为“yes”会将默认刷新模式更改为异步。

https://redis.io/commands/flushdb/

工作场景

若依开发token不过期设置

在java开发过程中token一过期就要重新登录,非常的麻烦。那么可不可以让我们开发用的token不过期呢?这样调试时就不需要频繁的重新登录了。
使用一行命令即可:

PERSIST "login_tokens:706f4afe-4588-4830-9b79-188544387acc"

实操如下:

127.0.0.1:6379> keys *login*
1) "login_tokens:706f4afe-4588-4830-9b79-188544387acc"
127.0.0.1:6379> PERSIST "login_tokens:706f4afe-4588-4830-9b79-188544387acc"
(integer) 1
127.0.0.1:6379> ttl "login_tokens:706f4afe-4588-4830-9b79-188544387acc"
(integer) -1
127.0.0.1:6379> 

参考

https://redis.io/docs/manual/cli/

猜你喜欢

转载自blog.csdn.net/lxyoucan/article/details/125257184