Redis命令-key

Redis 键(key)

Redis 键命令用于管理 redis 的键。

语法

Redis 键命令的基本语法如下:

> COMMAND KEY_NAME

实例

> set name tom
OK
> del name
1

在以上实例中 DEL 是一个命令, name 是一个键。 如果键被删除成功,命令执行后输出 (integer) 1,否则将输出 (integer) 0


Redis keys 命令

更多命令请参考:https://redis.io/commands

初始化一些数据

初始化一些key

excel 创建数据,贴到nodepad++,然后贴到idea的terminal执行就好了

set node1 1
set node2 2
set node3 3
set node4 4
set node5 5
set node6 6
set node7 7
set node8 8
set node9 9
set node10 10
set node11 11
set node12 12
set node13 13
set node14 14
set node15 15
set node16 16
set node17 17
set node18 18
set node19 19
set node20 20
set node21 21
set node22 22
set node23 23
set node24 24
set node25 25
set node26 26
set node27 27
set node28 28
set node29 29

DEL

该命令用于在 key 存在时删除 key。

语法

DEL KEY_NAME

返回值

被删除 key 的数量。

实例

> del name
0
> set name tom
OK
> del name
1

EXISTS

Redis EXISTS 命令用于检查给定 key 是否存在。

语法

EXISTS KEY_NAME

返回值

若 key 存在返回 1 ,否则返回 0 。

实例

> exists name
0
> set name tom
OK
> exists name
1

Expire

Redis Expire 命令用于设置 key 的过期时间,key 过期后将不再可用。单位以秒计。

语法

Expire KEY_NAME TIME_IN_SECONDS

返回值

设置成功返回 1 。 当 key 不存在或者不能为 key 设置过期时间时(比如在低于 2.1.3 版本的 Redis 中你尝试更新 key 的过期时间)返回 0 。

实例

> expire name 10000
1
> expire task 10
0

PERSIST

Redis PERSIST 命令用于移除给定 key 的过期时间,使得 key 永不过期。

语法

PERSIST KEY_NAME

返回值

当过期时间移除成功时,返回 1 。 如果 key 不存在或 key 没有设置过期时间,返回 0

实例

> PERSIST name
1
> PERSIST task
0

Keys

Redis Keys 命令用于查找所有符合给定模式 pattern 的 key 。。

Redis 是单线程的,意味着命令阻塞,生产禁用因为对于百万级以上的key,会导致故障。

测试环境调试用的非常多

语法

KEYS PATTERN

返回值

符合给定模式的 key 列表 (Array)。

实例

> keys node*
node13
node2
node4
node16
node18
node29
node27
node23
node10
node19
node21
node6
node17
node26
node1
node12
node28
node20
node15
node24
node7
node3
node22
node11
node14
node5
node25
node9
node8

TTL

Redis TTL 命令以秒为单位返回 key 的剩余过期时间。

语法

TTL KEY_NAME

返回值

当 key 不存在时,返回 -2 。 当 key 存在但没有设置剩余生存时间时,返回 -1 。 否则,以秒为单位,返回 key 的剩余生存时间。

注意:在 Redis 2.8 以前,当 key 不存在,或者 key 没有设置剩余生存时间时,命令都返回 -1 。

实例

> ttl name
-1
> ttl task
-2

Type

Redis Type 命令用于返回 key 所储存的值的类型。

语法

TYPE KEY_NAME

返回值

返回 key 的数据类型,数据类型有:

  • none (key不存在)
  • string (字符串)
  • list (列表)
  • set (集合)
  • zset (有序集)
  • hash (哈希表)

实例

> type name
string
> type task
none

Expireat

Redis Expireat 命令用于以 UNIX 时间戳(unix timestamp)格式设置 key 的过期时间。key 过期后将不再可用。

语法

TIME_IN_UNIX_TIMESTAMP:指定key在指定的时间戳过期,精度到秒。

Expireat KEY_NAME TIME_IN_UNIX_TIMESTAMP

返回值

  • 设置成功返回 1 。

  • 返回0,当指定的key不存在时。

给指定的key设置一个过去的时间戳(小于当前时间戳)时,Redis会立即删除掉相应的key。

实例

> set name tom
OK
> EXPIREAT name 1679567492
1
> ttl name
74446

PEXPIRE

Redis PEXPIRE 命令和 EXPIRE 命令的作用类似,但是它以毫秒为单位设置 key 的生存时间,而不像 EXPIRE 命令那样,以秒为单位。

语法

PEXPIRE key milliseconds

返回值

设置成功,返回 1

key 不存在或设置失败,返回 0

实例

> PEXPIRE name 10000000
1
> ttl name
9994
> PEXPIRE name 10000000
1
> PEXPIRE task 10000000
0

PEXPIREAT

Redis PEXPIREAT 命令用于设置 key 的过期时间,以毫秒计。key 过期后将不再可用。

语法

PEXPIREAT KEY_NAME TIME_IN_MILLISECONDS_IN_UNIX_TIMESTAMP

返回值

设置成功返回 1 。

当 key 不存在或者不能为 key 设置过期时间时(比如在低于 2.1.3 版本的 Redis 中你尝试更新 key 的过期时间)返回 0 。

实例

> PEXPIREAT name 1679567492000
1
> ttl name
73931

Move

Redis MOVE 命令用于将当前数据库的 key 移动到给定的数据库 db 当中。

基本用不到

扩展小知识select db 可以切换库

语法

MOVE KEY_NAME DESTINATION_DATABASE

返回值

移动成功返回 1 ,失败则返回 0 。

实例

> select 0 # redis默认使用数据库 0,为了清晰起见,这里再显式指定一次。
OK
> set com ise
OK
> move com 1
1
> get com
null
> select 1
OK
> get com
ise

Pttl

Redis Pttl 命令以毫秒为单位返回 key 的剩余过期时间。

语法

PTTL KEY_NAME

返回值

当 key 不存在时,返回 -2 。

当 key 存在但没有设置剩余生存时间时,返回 -1 。

否则,以毫秒为单位,返回 key 的剩余生存时间。

实例

> select 0
OK
> pttl name
73437522
> pttl task
-2

RANDOMKEY

Redis RANDOMKEY 命令从当前数据库中随机返回一个 key 。

语法

RANDOMKEY

返回值

当数据库不为空时,返回一个 key 。 当数据库为空时,返回 nil (windows 系统返回 null)

实例

> RANDOMKEY
node4

Rename

Redis Rename 命令用于修改 key 的名称 。

语法

RENAME OLD_KEY_NAME NEW_KEY_NAME

返回值

改名成功时提示 OK ,失败时候返回一个错误。

当 OLD_KEY_NAME 和 NEW_KEY_NAME 相同,或者 OLD_KEY_NAME 不存在时,返回一个错误。

当 NEW_KEY_NAME 已经存在时, RENAME 命令将覆盖旧值。

实例

> rename name title
OK
> rename name title
ERR no such key
> rename title title
OK
> set task tom
OK
> rename title tom
OK
> get task
tom
> get title
null
> get tom
tom
> set tom cat
OK
> rename tom task
OK
> get task
cat

Renamenx

Redis Renamenx 命令用于在新的 key 不存在时修改 key 的名称 。

语法

RENAMENX OLD_KEY_NAME NEW_KEY_NAME

返回值

修改成功时,返回 1 。 如果 NEW_KEY_NAME 已经存在,返回 0 。

实例

> renamenx task name
1
> renamenx task name
ERR no such key

SCAN

scan命令不是不重要才放到后面,反而是因为太重要,才放到后面的。这个是真正业务上常用命令,坑也多,无法根据mongodb或者mysql的游标触类旁通

Redis Scan 命令用于迭代数据库中的数据库键。

SCAN 命令是一个基于游标的迭代器,每次被调用之后, 都会向用户返回一个新的游标, 用户在下次迭代时需要使用这个新游标作为 SCAN 命令的游标参数, 以此来延续之前的迭代过程。

SCAN 返回一个包含两个元素的数组, 第一个元素是用于进行下一次迭代的新游标, 而第二个元素则是一个数组, 这个数组中包含了所有被迭代的元素。如果新游标返回 0 表示迭代已结束。

相关命令:

  • SSCAN命令用于迭代集合键中的元素。
  • HSCAN命令用于迭代哈希键中的键值对。
  • ZSCAN命令用于迭代有序集合中的元素(包括元素成员和元素分值)。

语法

SCAN cursor [MATCH pattern] [COUNT count]
  • cursor - 游标。
  • pattern - 匹配的模式。
  • count - 指定从数据集里返回多少元素,默认值为 10 。业务上常用值是10000

返回值

数组列表。

实例

> scan 0 match "node*" count 10
10
node18
node24
node7
node3
node4
node12
node19
node5
node2
node6
node17
> scan 10 match "node*" count 10
11
node29
node27
node21
node13
node22
node11
node16
node28
node25
node26
node1
> scan 11 match "node*" count 10
0
node23
node10
node14
node20
node15
node9
node8

scan知识扩展

参考笔记

https://www.cnblogs.com/hbuuid/p/16288263.html

在内网真实业务redis上去操作是同样的问题,scan返回值是随机的,可能有可能没有,可能重复,新增的可以也扫描不到。

https://www.cnblogs.com/jelly12345/p/16424080.html

posted @   红尘过客2022  阅读(50)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
点击右上角即可分享
微信分享提示