美文网首页Redis常用命令
第一部分:Redis之Key(键)

第一部分:Redis之Key(键)

作者: 快乐的bug制造者 | 来源:发表于2018-02-17 19:53 被阅读28次

DEL:
DEL key [key ...]

删除给定的一个或多个 key 。

不存在的 key 会被忽略。

返回值:被删除 key 的数量。

#  删除单个 key

redis> SET name huangz
OK

redis> DEL name
(integer) 1


# 删除一个不存在的 key

redis> EXISTS phone
(integer) 0

redis> DEL phone # 失败,没有 key 被删除
(integer) 0


# 同时删除多个 key

redis> SET name "redis"
OK

redis> SET type "key-value store"
OK

redis> SET website "redis.com"
OK

redis> DEL name type website
(integer) 3

EXISTS:
EXISTS key

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

redis> SET db "redis"
OK

redis> EXISTS db
(integer) 1

redis> DEL db
(integer) 1

redis> EXISTS db
(integer) 0

expire:
EXPIRE key seconds
相关命令expireat(接收参数unix的时间戳)
相关命令pexpire(设置时间为毫秒为单位)
相关命令pexpireat(接收以毫秒为单位的unix的时间戳)

为给定 key 设置生存时间,当 key 过期时(生存时间为 0 ),它会被自动删除。

在 Redis 中,带有生存时间的key 被称为『易失的』(volatile)。

生存时间可以通过使用 DEL 命令来删除整个 key 来移除,或者被 SETGETSET 命令覆写(overwrite),这意味着,如果一个命令只是修改(alter)一个带生存时间的 key的值而不是用一个新的 key 值来代替(replace)它的话,那么生存时间不会被改变。

比如说,对一个key 执行 INCR 命令,对一个列表进行 LPUSH 命令,或者对一个哈希表执行 HSET 命令,这类操作都不会修改key 本身的生存时间。

另一方面,如果使用 RENAME 对一个 key进行改名,那么改名后的 key 的生存时间和改名前一样。

RENAME 命令的另一种可能是,尝试将一个带生存时间的 key 改名成另一个带生存时间的another_key ,这时旧的 another_key (以及它的生存时间)会被删除,然后旧的 key 会改名为 another_key ,因此,新的 another_key的生存时间也和原本的 key 一样。

使用 PERSIST 命令可以在不删除 key 的情况下,移除 key的生存时间,让 key 重新成为一个『持久的』(persistent) key 。

更新生存时间

可以对一个已经带有生存时间的 key 执行 EXPIRE 命令,新指定的生存时间会取代旧的生存时间。

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

redis> SET cache_page "www.google.com"
OK

redis> EXPIRE cache_page 30  # 设置过期时间为 30 秒
(integer) 1

redis> TTL cache_page    # 查看剩余生存时间
(integer) 23

redis> EXPIRE cache_page 30000   # 更新过期时间
(integer) 1

redis> TTL cache_page
(integer) 29996

keys
KEYS pattern

查找所有符合给定模式 pattern 的 key 。

KEYS * 匹配数据库中所有 key 。
KEYS h?llo 匹配 hello , hallo 和 hxllo 等。
KEYS h*llo 匹配 hllo 和 heeeeello 等。
KEYS h[ae]llo 匹配 hello 和 hallo ,但不匹配 hillo 。
特殊符号用 \ 隔开

返回值:
符合给定模式的 key 列表。

redis> MSET one 1 two 2 three 3 four 4  # 一次设置 4 个 key
OK

redis> KEYS *o*
1) "four"
2) "two"
3) "one"

redis> KEYS t??
1) "two"

redis> KEYS t[w]*
1) "two"

redis> KEYS *  # 匹配数据库内所有 key
1) "four"
2) "three"
3) "two"
4) "one"

PERSIST
PERSIST key

移除给定 key 的生存时间,将这个 key 从『易失的』(带生存时间 key )转换成『持久的』(一个不带生存时间、永不过期的 key )。

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

redis> SET mykey "Hello"
OK

redis> EXPIRE mykey 10  # 为 key 设置生存时间
(integer) 1

redis> TTL mykey
(integer) 10

redis> PERSIST mykey    # 移除 key 的生存时间
(integer) 1

redis> TTL mykey
(integer) -1

ttl
TTL key
相关命令pttl(以毫秒为单位返回key的剩余时间)

以秒为单位,返回给定 key 的剩余生存时间

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

# 不存在的 key

redis> FLUSHDB
OK

redis> TTL key
(integer) -2


# key 存在,但没有设置剩余生存时间

redis> SET key value
OK

redis> TTL key
(integer) -1


# 有剩余生存时间的 key

redis> EXPIRE key 10086
(integer) 1

redis> TTL key
(integer) 10084

randomkey
RANDOMKEY

从当前数据库中随机返回(不删除)一个 key 。

返回值:
当数据库不为空时,返回一个 key 。
当数据库为空时,返回 nil 。

# 数据库不为空

redis> MSET fruit "apple" drink "beer" food "cookies"   # 设置多个 key
OK

redis> RANDOMKEY
"fruit"

redis> RANDOMKEY
"food"

redis> KEYS *    # 查看数据库内所有key,证明 RANDOMKEY 并不删除 key
1) "food"
2) "drink"
3) "fruit"


# 数据库为空

redis> FLUSHDB  # 删除当前数据库所有 key
OK

redis> RANDOMKEY
(nil)

rename
RENAME key newkey
相关命令renamenx(当且仅当 newkey 不存在时,将 key 改名为 newkey)

将 key 改名为 newkey 。

当 newkey 相同,或者 key 不存在时,返回一个错误。

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

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

# key 存在且 newkey 不存在

redis> SET message "hello world"
OK

redis> RENAME message greeting
OK

redis> EXISTS message               # message 不复存在
(integer) 0

redis> EXISTS greeting              # greeting 取而代之
(integer) 1


# 当 key 不存在时,返回错误

redis> RENAME fake_key never_exists
(error) ERR no such key


# newkey 已存在时, RENAME 会覆盖旧 newkey

redis> SET pc "lenovo"
OK

redis> SET personal_computer "dell"
OK

redis> RENAME pc personal_computer
OK

redis> GET pc
(nil)

redis:1> GET personal_computer      # 原来的值 dell 被覆盖了
"lenovo"

相关文章

  • Redis学习笔记 -- 2

    接着上一篇接着介绍redis的知识 Redis Redis 键(key) Redis 键命令用于管理 redis ...

  • Redis:使用scan配合lua脚本进行删除key

    Redis SCAN 命令 Redis key(键)](https://www.runoob.com/redis/...

  • 数据库Redis(2)

    1. Redis键(Key) Redis keys命令 2. Redis HyperLogLog Redis Hy...

  • redis-cli常用命令

    redis-cli常用命令 键(key) keys * 注意: 由于redis是单线程的,因此在redis key...

  • Redis 键(key) 命令

    Redis 键(key) 命令 1> del 命令:该命令用于在 key 存在是删除 key格式:DEL key返...

  • Redis 键(key)

    Type 返回 key 所储存的值的类型 type[https://www.redis.net.cn/order/...

  • Redis 键(key)

    Redis 键命令用于管理 redis 的键。语法Redis 键命令的基本语法如下: 实例 在以上实例中 DEL ...

  • Redis键(Key)

    Redis keys 命令 下表给出了与 Redis 键相关的基本命令: 序号命令及描述 1DEL key 该命令...

  • redis 在 php 中的应用(key篇)

    KEY(键) Redis DEL 命令用于删除已存在的键。不存在的 key 会被忽略。 2、EXISTS Redi...

  • Redis key键命令

    redis是基于key -- value 存储的 NoSQL 数据库,那么下面来看看关于key的键命令。 键命令 ...

网友评论

    本文标题:第一部分:Redis之Key(键)

    本文链接:https://www.haomeiwen.com/subject/wrvezxtx.html