随笔
主页
  • Unity
  • 前端文章

    • JavaScript
    • Vue
  • 学习笔记

    • 《JavaScript教程》笔记
    • 《JavaScript高级程序设计》笔记
    • 《ES6 教程》笔记
  • 数据库

    • Redis
  • Html 文档
  • CSS 文档
  • Vue 文档
  • TypeScript
  • Golang
  • 版本控制

    • Git 文档
    • Svn 文档
  • 技术文档

    • Markdown语法
    • GitHub技巧
    • Nodejs
  • 分类
  • 标签
  • 时间线
  • 目录结构
  • 配置和约定
  • 主题配置
  • 首页配置
  • front matter
  • 目录页配置
  • 摘要
  • 主题颜色
  • 评论栏
  • Markdown扩展
GitHub
主页
  • Unity
  • 前端文章

    • JavaScript
    • Vue
  • 学习笔记

    • 《JavaScript教程》笔记
    • 《JavaScript高级程序设计》笔记
    • 《ES6 教程》笔记
  • 数据库

    • Redis
  • Html 文档
  • CSS 文档
  • Vue 文档
  • TypeScript
  • Golang
  • 版本控制

    • Git 文档
    • Svn 文档
  • 技术文档

    • Markdown语法
    • GitHub技巧
    • Nodejs
  • 分类
  • 标签
  • 时间线
  • 目录结构
  • 配置和约定
  • 主题配置
  • 首页配置
  • front matter
  • 目录页配置
  • 摘要
  • 主题颜色
  • 评论栏
  • Markdown扩展
GitHub
  • 基础

  • 命令

    • 命令
    • 键(key)
      • Redis keys 命令
      • DEL
      • DUMP
      • EXISTS
      • EXPIRE
      • EXPIREAT
      • PEXPIRE
      • PEXPIREAT
      • KEYS
      • MOVE
      • PERSIST
      • PTTL
      • TTL
      • RANDOMKEY
      • RENAME
      • RENAMENX
      • SCAN
        • 相关命令
      • TYPE
    • 字符串(String)
  • Redis
  • 命令
dong
2021-08-20

键(key)

# Redis 键(key)

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

语法格式: [COMMAND] [KEY_NAME]

# Redis keys 命令

命令 描述
DEL key 该命令用于在 key 存在时删除 key。
DUMP key 序列化给定 key ,并返回被序列化的值。
EXISTS key 检查给定 key 是否存在。
EXPIRE key seconds 为给定 key 设置过期时间,以秒计。
EXPIREAT key timestamp EXPIREAT 的作用和 EXPIRE 类似,都用于为 key 设置过期时间。 不同在于 EXPIREAT 命令接受的时间参数是 UNIX 时间戳(unix timestamp)。
PEXPIRE key milliseconds 设置 key 的过期时间以毫秒计。
PEXPIREAT key milliseconds-timestamp 设置 key 过期时间的时间戳(unix timestamp) 以毫秒计
KEYS pattern 查找所有符合给定模式( pattern)的 key 。
MOVE key db 将当前数据库的 key 移动到给定的数据库 db 当中。
PERSIST key 移除 key 的过期时间,key 将持久保持。
PTTL key 以毫秒为单位返回 key 的剩余的过期时间。
TTL key 以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。
RANDOMKEY 从当前数据库中随机返回一个 key
RENAME key newkey 修改 key 的名称
RENAMENX key newkey 仅当 newkey 不存在时,将 key 改名为 newkey 。
SCAN cursor [MATCH pattern] [COUNT count] 迭代数据库中的数据库键。
TYPE key 返回 key 所储存的值的类型。

# DEL

Redis DEL 命令用于删除已存在的键。不存在的 key 会被忽略。

  • 语法
  redis 127.0.0.1:6379> DEL KEY_NAME
1
  • 返回值

    被删除 key 的数量。

# DUMP

Redis DUMP 命令用于序列化给定 key ,并返回被序列化的值。

  • 语法
  redis 127.0.0.1:6379> DUMP KEY_NAME
1
  • 返回值

    如果 key 不存在,那么返回 nil 。 否则,返回序列化之后的值。

# EXISTS

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

  • 语法
  redis 127.0.0.1:6379> EXISTS KEY_NAME
1
  • 返回值

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

# EXPIRE

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

  • 语法
  redis 127.0.0.1:6379> Expire KEY_NAME TIME_IN_SECONDS
1
  • 返回值

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

# EXPIREAT

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

  • 语法
  redis 127.0.0.1:6379> Expireat KEY_NAME TIME_IN_UNIX_TIMESTAMP
1
  • 返回值

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

# PEXPIRE

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

  • 语法
  redis 127.0.0.1:6379> PEXPIRE key milliseconds
1
  • 返回值

    设置成功,返回 1, /key 不存在或设置失败,返回 0

# PEXPIREAT

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

  • 语法
  PEXPIREAT KEY_NAME TIME_IN_MILLISECONDS_IN_UNIX_TIMESTAMP
1
  • 返回值

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

# KEYS

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

  • 语法
  redis 127.0.0.1:6379> KEYS PATTERN
1
  • 返回值

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

# MOVE

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

  • 语法
  redis 127.0.0.1:6379> MOVE KEY_NAME DESTINATION_DATABASE
1
  • 返回值

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

  • 实例

    # key 存在于当前数据库
    
    redis> SELECT 0                             # redis默认使用数据库 0,为了清晰起见,这里再显式指定一次。
    OK
    
    redis> SET song "secret base - Zone"
    OK
    
    redis> MOVE song 1                          # 将 song 移动到数据库 1
    (integer) 1
    
    redis> EXISTS song                          # song 已经被移走
    (integer) 0
    
    redis> SELECT 1                             # 使用数据库 1
    OK
    
    redis:1> EXISTS song                        # 证实 song 被移到了数据库 1 (注意命令提示符变成了"redis:1",表明正在使用数据库 1)
    (integer) 1
    
    
    # 当 key 不存在的时候
    
    redis:1> EXISTS fake_key
    (integer) 0
    
    redis:1> MOVE fake_key 0                    # 试图从数据库 1 移动一个不存在的 key 到数据库 0,失败
    (integer) 0
    
    redis:1> select 0                           # 使用数据库0
    OK
    
    redis> EXISTS fake_key                      # 证实 fake_key 不存在
    (integer) 0
    
    
    # 当源数据库和目标数据库有相同的 key 时
    
    redis> SELECT 0                             # 使用数据库0
    OK
    redis> SET favorite_fruit "banana"
    OK
    
    redis> SELECT 1                             # 使用数据库1
    OK
    redis:1> SET favorite_fruit "apple"
    OK
    
    redis:1> SELECT 0                           # 使用数据库0,并试图将 favorite_fruit 移动到数据库 1
    OK
    
    redis> MOVE favorite_fruit 1                # 因为两个数据库有相同的 key,MOVE 失败
    (integer) 0
    
    redis> GET favorite_fruit                   # 数据库 0 的 favorite_fruit 没变
    "banana"
    
    redis> SELECT 1
    OK
    
    redis:1> GET favorite_fruit                 # 数据库 1 的 favorite_fruit 也是
    "apple"
    

# PERSIST

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

  • 语法
  redis 127.0.0.1:6379> PERSIST KEY_NAME
1
  • 返回值

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

# PTTL

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

  • 语法
  redis 127.0.0.1:6379> PTTL KEY_NAME
1
  • 返回值

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

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

  • 实例 # 不存在的 key

    redis> FLUSHDB
    OK
    
    redis> PTTL key
    (integer) -2
    
    
    # key 存在,但没有设置剩余生存时间
    
    redis> SET key value
    OK
    
    redis> PTTL key
    (integer) -1
    
    
    # 有剩余生存时间的 key
    
    redis> PEXPIRE key 10086
    (integer) 1
    
    redis> PTTL key
    (integer) 6179
    

# TTL

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

  • 语法
  redis 127.0.0.1:6379> TTL KEY_NAME
1
  • 实例

    # 不存在的 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

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

  • 语法
  redis 127.0.0.1:6379> RANDOMKEY 
1
  • 返回值

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

  • 实例

# 数据库不为空

  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

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

  • 语法
  redis 127.0.0.1:6379> RENAME OLD_KEY_NAME NEW_KEY_NAME 
1
  • 返回值

    改名成功时提示 OK ,失败时候返回一个错误。当 OLD_KEY_NAME 和 NEW_KEY_NAME 相同,或者 OLD_KEY_NAME 不存在时,返回一个错误。 当 NEW_KEY_NAME 已经存在时, RENAME 命令将覆盖旧值

  • 实例

    # 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"
    

# RENAMENX

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

  • 语法
  redis 127.0.0.1:6379> RENAMENX OLD_KEY_NAME NEW_KEY_NAME
1
  • 返回值

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

  • 实例

    # newkey 不存在,改名成功
    
    redis> SET player "MPlyaer"
    OK
    
    redis> EXISTS best_player
    (integer) 0
    
    redis> RENAMENX player best_player
    (integer) 1
    
    
    # newkey存在时,失败
    
    redis> SET animal "bear"
    OK
    
    redis> SET favorite_animal "butterfly"
    OK
    
    redis> RENAMENX animal favorite_animal
    (integer) 0
    
    redis> get animal
    "bear"
    
    redis> get favorite_animal
    "butterfly"
    

# SCAN

Redis Scan 命令用于迭代数据库中的数据库键。 SCAN 命令是一个基于游标的迭代器,每次被调用之后, 都会向用户返回一个新的游标, 用户在下次迭代时需要使用这个新游标作为 SCAN 命令的游标参数, 以此来延续之前的迭代过程。 SCAN 返回一个包含两个元素的数组, 第一个元素是用于进行下一次迭代的新游标, 而第二个元素则是一个数组, 这个数组中包含了所有被迭代的元素。如果新游标返回 0 表示迭代已结束。

# 相关命令

  • SSCAN 命令用于迭代集合键中的元素。

  • HSCAN 命令用于迭代哈希键中的键值对。

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

  • 语法: SCAN cursor [MATCH pattern] [COUNT count]

    • cursor - 游标。
    • pattern - 匹配的模式。
    • count - 指定从数据集里返回多少元素,默认值为 10 。
  • 返回值: 数组列表。

  • 实例

    redis 127.0.0.1:6379> scan 0   # 使用 0 作为游标,开始新的迭代
    1) "17"                        # 第一次迭代时返回的游标
    2)  1) "key:12"
        2) "key:8"
        3) "key:4"
        4) "key:14"
        5) "key:16"
        6) "key:17"
        7) "key:15"
        8) "key:10"
        9) "key:3"
      10) "key:7"
      11) "key:1"
    redis 127.0.0.1:6379> scan 17  # 使用的是第一次迭代时返回的游标 17 开始新的迭代
    1) "0"
    2) 1) "key:5"
      2) "key:18"
      3) "key:0"
      4) "key:2"
      5) "key:19"
      6) "key:13"
      7) "key:6"
      8) "key:9"
      9) "key:11"
    

# TYPE

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

  • 语法
  redis 127.0.0.1:6379> TYPE KEY_NAME 
1
  • 返回值

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

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

    # 字符串

    redis> SET weather "sunny" OK

    redis> TYPE weather string

    # 列表

    redis> LPUSH book_list "programming in scala" (integer) 1

    redis> TYPE book_list list

    # 集合

    redis> SADD pat "dog" (integer) 1

    redis> TYPE pat set

#redis
命令
字符串(String)

← 命令 字符串(String)→

Theme by Vdoing | Copyright © 2021-2023 Evan Dong MIT License | 粤ICP备2021052092号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×