赞
踩
KEYS 命令在处理大量数据时可能会影响 Redis 服务器的性能,因为它会遍历所有 key 来寻找匹配的项。
在生产环境中,应该谨慎使用 KEYS 命令,尤其是在数据量巨大的情况下。
redis> MSET firstname Jack lastname Stuntman age 35
"OK"
redis> KEYS *name*
1) "lastname"
2) "firstname"
redis> KEYS a??
1) "age"
redis> KEYS *
1) "lastname"
2) "age"
3) "firstname"
redis>
首先使用 MSET
命令设置了多个 key-value 对,分别为 firstname
、lastname
和 age
。然后使用 KEYS
命令查找符合指定模式的 key。
KEYS
命令使用模式 *name*
,返回所有包含 “name” 的 key,即 lastname
和 firstname
。KEYS
命令使用模式 a??
,返回所有以字母 “a” 开头并且后面有两个字符的 key,即 age
。KEYS
命令使用模式 *
,返回所有存在的 key,即 lastname
、age
和 firstname
。在 Redis 中,DEL
命令用于删除指定的 key,并返回成功删除的 key 的数量。
redis> SET key1 "Hello"
"OK"
redis> SET key2 "World"
"OK"
redis> DEL key1 key2 key3
(integer) 2
redis>
使用 DEL
命令删除了两个 key,即 key1
和 key2
。因为这两个 key 存在且被成功删除,所以返回的结果是 (integer) 2
。
如果执行 DEL
命令删除了不存在的 key,那么返回的结果将是 (integer) 0
,表示没有成功删除任何 key。
EXISTS
命令用于判断给定的 key 是否存在于 Redis 中。它可以同时接受多个 key,并返回存在的 key 的数量。如果 key 存在,则返回 1;如果 key 不存在,则返回 0。
redis> SET key1 "Hello"
"OK"
redis> EXISTS key1
(integer) 1
redis> EXISTS nosuchkey
(integer) 0
redis> SET key2 "World"
"OK"
redis> EXISTS key1 key2 nosuchkey
(integer) 2
redis>
使用 SET
命令分别设置了 key1
和 key2
的值。然后使用 EXISTS
命令来检查指定的 key 是否存在。
EXISTS
命令执行 EXISTS key1
,返回结果为 (integer) 1
,表示 key1
存在。EXISTS
命令执行 EXISTS nosuchkey
,返回结果为 (integer) 0
,表示 nosuchkey
不存在。EXISTS key1 key2 nosuchkey
,返回结果为 (integer) 2
,表示其中两个 key 存在,即 key1
和 key2
,而 nosuchkey
不存在。Tips:
如果在参数中多次提到相同的现有键,它将被计算多次。如果somekey存在,exists somekey somekey将返回2。
EXPIRE key seconds [NX | XX | GT | LT]
key
:要设置过期时间的键名。
seconds
:过期时间,单位为秒。键在指定秒数后将会被自动删除。
NX
:(可选)仅在键不存在时设置过期时间。
XX
:(可选)仅在键已存在时设置过期时间。
GT
:(可选)仅在键的当前过期时间大于给定过期时间时设置过期时间。
LT
:(可选)仅在键的当前过期时间小于给定过期时间时设置过期时间。
当 NX
和 XX
选项都未指定时,默认行为是设置键的过期时间,如果键不存在则创建键并设置过期时间。
NX
和 XX
选项可以与 GT
或 LT
选项结合使用,从而提供更精确的过期时间控制。
设置键 mykey
在 60 秒后过期:
EXPIRE mykey 60
仅当键 mykey
存在时,设置它在 120 秒后过期:
EXPIRE mykey 120 XX
仅当键 mykey
不存在时,设置它在 300 秒后过期:
EXPIRE mykey 300 NX
仅当键 mykey
的当前过期时间大于 180 秒时,设置它在 180 秒后过期:
EXPIRE mykey 180 GT
仅当键 mykey
的当前过期时间小于 240 秒时,设置它在 240 秒后过期:
EXPIRE mykey 240 LT
redis> SET mykey "Hello"
"OK"
redis> EXPIRE mykey 10
(integer) 1
redis> TTL mykey
(integer) 10
redis> SET mykey "Hello World"
"OK"
redis> TTL mykey
(integer) -1
redis> EXPIRE mykey 10 XX
(integer) 0
redis> TTL mykey
(integer) -1
redis> EXPIRE mykey 10 NX
(integer) 1
redis> TTL mykey
(integer) 10
redis>
TTL
命令用于获取 Redis 键的剩余生存时间(Time To Live,TTL)。
TTL key
key
:要查询剩余生存时间的键名。返回值
redis> SET mykey "Hello"
"OK"
redis> EXPIRE mykey 10
(integer) 1
redis> TTL mykey
(integer) 10
redis>
返回键的剩余生存时间(TTL):
-1
。返回 -1
表示键不存在或者键没有设置过期时间。
返回 0
表示键存在并且没有剩余生存时间,即键已经过期。
TTL 返回的时间单位是秒。
COPY
命令用于复制 Redis 数据库中的数据到另一个数据库中。
COPY source destination [DB destination-db] [REPLACE]
source
:要复制数据的源键名。
destination
:目标键名,复制后的数据将存储在这个键中。
DB destination-db
:(可选)目标数据库的索引号。默认为 0(即默认数据库)。
REPLACE
:(可选)如果目标键 destination
已存在且有数据,使用 REPLACE
选项将会覆盖现有数据。如果未指定 REPLACE
,并且目标键已存在,则 COPY
命令将会失败。
source
和 destination
参数必须是有效的键名。
可以指定一个不同的目标数据库索引号,使数据被复制到该索引号对应的数据库中。
使用 REPLACE
选项可以在目标键已存在时覆盖现有数据,否则命令会失败。
示例
将键 mykey
中的数据复制到键 mykey_copy
中:
COPY mykey mykey_copy
将键 mylist
中的数据复制到键 mylist_backup
中,并指定目标数据库索引号为 1:
COPY mylist mylist_backup DB 1
将键 myset
中的数据复制到键 myset_new
中,如果 myset_new
已存在则覆盖现有数据:
COPY myset myset_new REPLACE
MOVE
命令用于将 Redis 中的指定键移动到另一个数据库中。
MOVE key db
key
:要移动的键名。
db
:目标数据库的索引号,用于指定移动到哪个数据库中。
key
参数是要移动的键名,必须存在于当前数据库中。
db
参数是目标数据库的索引号,用于指定移动到哪个数据库中。索引号从 0 开始,Redis 默认支持 16 个数据库,可以通过配置进行扩展。
将键 mykey
移动到数据库索引号为 1 的数据库中:
MOVE mykey 1
如果目标数据库 db
不存在(例如超过了默认的 0 到 15 的范围),那么 MOVE
命令会返回错误。
如果键 key
已经存在于目标数据库 db
中,那么 MOVE
命令将无效,不会导致任何数据移动。
当键成功移动到目标数据库时,返回 1
。
如果键已经存在于目标数据库中,或者数据库索引号超出范围,返回 0
。
在 Redis 中,TOUCH
命令用于修改指定键的最后访问时间(last access time),从而更新键的过期时间。
TOUCH key [key ...]
key
:一个或多个要更新最后访问时间的键名。
key
参数是一个或多个键名,用空格分隔。
TOUCH
命令主要用于更新 Redis 键的最后访问时间:
TOUCH
命令可以防止 Redis 自动清除这些键。TOUCH
命令更新键的访问时间,从而影响键的淘汰顺序。更新键 mykey
的最后访问时间:
TOUCH mykey
更新多个键的最后访问时间:
TOUCH key1 key2 key3
TOUCH
命令仅更新键的最后访问时间,不改变键的值或其他属性。TOUCH
命令会忽略该键,不会报错。TOUCH
命令可以用于确保键不会在达到过期时间后被 Redis 主动清理,适用于需要持久化存储的场景。返回值
redis> SET key1 "Hello"
"OK"
redis> SET key2 "World"
"OK"
redis> TOUCH key1 key2
(integer) 2
redis>
在 Redis 中,RENAME
命令用于修改一个键的名称。
RENAME key newkey
key
:要修改名称的键名。
newkey
:键的新名称。
RENAME
命令用于将一个键的名称修改为新的名称。如果新的键名已经存在,则会覆盖原有键的值。
将键 mykey
的名称修改为 newkey
:
RENAME mykey newkey
key
不存在,则 RENAME
命令会返回错误。newkey
已经存在,它的值将被覆盖。返回值
redis> SET mykey "Hello"
"OK"
redis> RENAME mykey myotherkey
"OK"
redis> GET myotherkey
"Hello"
redis>
在 Redis 中,RENAMENX
命令用于将一个键的名称修改为新的名称,但只在新名称的键不存在时执行修改。
RENAMENX key newkey
key
:要修改名称的键名。
newkey
:键的新名称。
RENAMENX
命令会检查新名称 newkey
是否已经存在。
如果 newkey
已经存在,则不执行任何操作,返回 0
。
如果 newkey
不存在,则将 key
的名称修改为 newkey
。
如果 key
不存在,则 RENAMENX
命令会返回错误。
RENAMENX
命令是原子操作,即在执行过程中不会出现部分成功的情况。
redis> SET mykey "Hello"
"OK"
redis> SET myotherkey "World"
"OK"
redis> RENAMENX mykey myotherkey
(integer) 0
redis> GET myotherkey
"World"
redis>
key
的名称修改为 newkey
时,返回 1
。newkey
已经存在,没有执行修改操作,则返回 0
。
TYPE
命令用于返回键所存储的值的类型。
TYPE key
key
:要查询类型的键名。redis> SET key1 "value"
"OK"
redis> LPUSH key2 "value"
(integer) 1
redis> SADD key3 "value"
(integer) 1
redis> TYPE key1
"string"
redis> TYPE key2
"list"
redis> TYPE key3
"set"
redis>
返回值
"none"
:键不存在。"string"
:字符串类型。"list"
:列表类型。"set"
:集合类型。"zset"
:有序集合类型。"hash"
:哈希类型。"stream"
:流类型。注意事项
"none"
。PERSIST
命令用于移除 Redis 键的过期时间,使得键成为永久有效的,不再自动过期。
PERSIST key
key
:要移除过期时间的键名。返回值
redis> SET mykey "Hello"
"OK"
redis> EXPIRE mykey 10
(integer) 1
redis> TTL mykey
(integer) 10
redis> PERSIST mykey
(integer) 1
redis> TTL mykey
(integer) -1
redis>
1
。0
。注意事项
PERSIST
命令来移除过期时间。PERSIST
命令会返回 0
。更多的通用命令可以去官网https://redis.io/docs/latest/commands/?group=generic查看哦~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。