此篇为人个笔记,基本是个人常用命令,仅供参考。
基础操作$ 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/
查询所有的keyshttps://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/