8 Redis_Key关键字

作者: 笑Skr人啊 | 来源:发表于2017-10-25 19:53 被阅读13次
    • 实例

    127.0.0.1:6379> SET runoobkey redis
    OK
    127.0.0.1:6379> DEL runoobkey
    (integer) 1
    

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

    • 1 SET命令

    Redis SET 命令用于设置给定 key 的值。如果 key 已经存储其他值, SET 就覆写旧值,且无视类型。
    
    # 语法
    127.0.0.1:6379> SET KEY_NAME KEY_VALUE
    
    # 返回值
    在 Redis 2.6.12 以前版本, SET 命令总是返回 OK 。
    从 Redis 2.6.12 版本开始, SET 在设置操作成功完成时,才返回 OK 。
    
    # 实例
    首先,我们在 redis 中创建一个 key 并设置值。
    
    # 对不存在的键进行设置
    127.0.0.1:6379> set k1 v1
    OK
    
    # 根据键获取值
    127.0.0.1:6379> get k1
    "v1"
    
    
    # 对已存在的键进行设置
    
    127.0.0.1:6379> set k1 new_v1
    OK
    127.0.0.1:6379> get k1
    "new_v1"
    
    
    • 2 EXISTS

    Redis EXISTS 命令用于检查给定 key 是否存在。
    
    -------------------------------------------------------------------------------------
    #语法
    127.0.0.1:6379> EXISTS KEY_NAME
    
    -------------------------------------------------------------------------------------
    #返回值
    若 key 存在返回 1 ,否则返回 0 。
    
    -------------------------------------------------------------------------------------
    #实例
    redis 127.0.0.1:6379> EXISTS myKey
    (integer) 0
    
    #现在我们创建一个名为 myKey  的键并赋值,再使用 EXISTS 命令。
    127.0.0.1:6379> set  myKey newkey
    OK
    127.0.0.1:6379> EXISTS  myKey
    (integer) 1
    
    • 3 MOVE

    Redis MOVE 命令用于将当前数据库的 key 移动到给定的数据库 db 当中。
    
    -------------------------------------------------------------------------------------
    #语法
    127.0.0.1:6379> MOVE KEY_NAME DESTINATION_DATABASE
    
    -------------------------------------------------------------------------------------
    #返回值
    移动成功返回 1 ,失败则返回 0 。
    
    #实例
    ----------------------------------------------------------------------------------
    # key 存在于当前数据库
    127.0.0.1:6379> SELECT 0  # redis默认使用数据库 0,为了清晰起见,这里再显式指定一次。
    OK
    127.0.0.1:6379> SET song "secret base - Zone"
    OK
    127.0.0.1:6379> MOVE song 1 # 将 song 移动到数据库 1
    (integer) 1
    127.0.0.1:6379> EXISTS song # song 已经被移走
    (integer) 0
    127.0.0.1:6379> SELECT 1 # 使用数据库 1
    OK
    127.0.0.1:6379[1]> EXISTS song # 证实 song 被移到了数据库 1 (注意命令提示符变成了"redis:1",表明正在使用数据库 1)
    (integer) 1
    
    ----------------------------------------------------------------------------------
    # 当 key 不存在的时候
    redis:1> EXISTS fake_key
    据库 0,失败
    (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"
    
    
    • 4 TTL

    Redis TTL 命令以秒为单位返回给定  key 的剩余过期时间(TTL, time to live)。
    
    ------------------------------------------------------------------------------------------------
    #语法
    127.0.0.1:6379> TTL KEY_NAME
    
    ------------------------------------------------------------------------------------------------
    #返回值
    当 key 不存在时,返回 -2 。 当 key 存在但没有设置剩余生存时间时,返回 -1 。 否则,以秒为单位,返回 key 的剩余生存时间。
    
    注意:在 Redis 2.8 以前,当 key 不存在,或者 key 没有设置剩余生存时间时,命令都返回 -1 。
    
    -------------------------------------------------------------------------------------
    #实例
    # 不存在的 key
    127.0.0.1:6379> FLUSHDB
    OK
    127.0.0.1:6379> TTL key
    (integer) -2
    
    # 存在,但没有设置剩余生存时间
    127.0.0.1:6379 > set mykey value
    OK
    127.0.0.1:6379 > TTL  mykey
    (integer) -1
    
    # 有剩余生存时间的 key
    127.0.0.1:6379> EXPIRE mykey 10 # 在 10秒后过期,此时在查询剩余生存时间返回-2
    (integer) 1
    127.0.0.1:6379>TTL mykey
    integer 5    #已过期的key,redis会将其移除
    
    
    ------------------------------------------------------------------------------------------------
    
    
    • 5 DEL

    Redis DEL 命令用于删除已存在的键。不存在的 key 会被忽略。
    
    -------------------------------------------------------------------------------------
    #语法
    redis 127.0.0.1:6379> DEL KEY_NAME
    
    -------------------------------------------------------------------------------------
    #返回值
    被删除 key 的数量。
    
    -------------------------------------------------------------------------------------
    # 实例
    首先,我们在 redis 中创建一个 key 并设置值。
    127.0.0.1:6379> SET myKey redis
    OK
    
    127.0.0.1:6379> del myKey
    (integer) 1
    
    127.0.0.1:6379> get myKey
    (nil)
    
    • 6 DUMP

    Redis DUMP 命令用于序列化给定 key ,并返回被序列化的值。
    
    -------------------------------------------------------------------------------------
    #语法
    127.0.0.1:6379> DUMP KEY_NAME
    
    #返回值
    如果 key 不存在,那么返回 nil 。 否则,返回序列化之后的值。
    
    -------------------------------------------------------------------------------------
    #实例
    首先,我们在 redis 中创建一个 key 并设置值。
    127.0.0.1:6379>  set myKey hello
    OK
    
    127.0.0.1:6379> dump myKey #现在使用 DUMP 序列化键值。
    "\x00\x05hello\a\x00\x9c@\n\x85m\xfe\xf5\x10"
    
    127.0.0.1:6379> DUMP not-exists-key
    (nil)
    
    • 7 EXPIRE

    Redis Expire 命令用于设置 key 的过期时间。key 过期后将不再可用。
    
    -------------------------------------------------------------------------------------
    #语法
    127.0.0.1:6379> Expire KEY_NAME TIME_IN_SECONDS
    
    -------------------------------------------------------------------------------------
    #返回值
    设置成功返回 1 。 当 key 不存在或者不能为 key 设置过期时间时(比如在低于 2.1.3 版本的 Redis 中你尝试更新 key 的过期时间)返回 0 。
    
    -------------------------------------------------------------------------------------
    #实例
    首先创建一个 key 并赋值:
    redis 127.0.0.1:6379> SET runooobkey redis
    OK
    
    redis 127.0.0.1:6379> EXPIRE runooobkey 60 #为 key 设置过期时间:
    (integer) 1
    以上实例中我们为键 runooobkey 设置了过期时间为 1 分钟,1分钟后该键会自动删除。
    
    • 8 EXPIREAT

    Redis Expireat 命令用于以 UNIX 时间戳(unix timestamp)格式设置 key 的过期时间。key 过期后将不再可用。作用和 EXPIRE 类似,都用于为 key 设置过期时间,不同在于 EXPIREAT 命令接受的时间参数是 UNIX 时间戳(unix timestamp)。
    
    -------------------------------------------------------------------------------------
    #语法
    
    127.0.0.1:6379> Expireat KEY_NAME TIME_IN_UNIX_TIMESTAMP
    
    -------------------------------------------------------------------------------------
    #返回值
    设置成功返回 1 。 当 key 不存在或者不能为 key 设置过期时间时(比如在低于 2.1.3 版本的 Redis 中你尝试更新 key 的过期时间)返回 0 。
    
    -------------------------------------------------------------------------------------
    #实例
    首先创建一个 key 并赋值:
    redis 127.0.0.1:6379> SET myKey redis
    OK
    
    #为 key 设置过期时间:
    redis 127.0.0.1:6379> EXPIREAT myKey 1293840000
    (integer) 1
    
    redis 127.0.0.1:6379>EXISTS myKey 
    (integer) 0
    
    • 9 PEXPIREAT

    Redis PEXPIREAT 命令用于设置 key 的过期时间,以毫秒计。key 过期后将不再可用。
    
    -------------------------------------------------------------------------------------
    #语法
    redis 127.0.0.1:6379> PEXPIREAT KEY_NAME TIME_IN_MILLISECONDS_IN_UNIX_TIMESTAMP
    
    -------------------------------------------------------------------------------------
    #返回值
    设置成功返回 1 。 当 key 不存在或者不能为 key 设置过期时间时(比如在低于 2.1.3 版本的 Redis 中你尝试更新 key 的过期时间)返回 0 。
    
    -------------------------------------------------------------------------------------
    #实例
    首先创建一个 key 并赋值:
    redis 127.0.0.1:6379> SET runoobkey redis
    OK
    
    #为 key 设置过期时间:
    redis 127.0.0.1:6379> PEXPIREAT runoobkey 1555555555005
    (integer) 1
    
    127.0.0.1:6379> ttl runoobkey
    (integer) 46594440
    
    • 10 KEYS

    Redis Keys 命令用于查找所有符合给定模式 pattern 的 key 
    
    -------------------------------------------------------------------------------------
    #语法
    redis KEYS 命令基本语法如下:
    redis 127.0.0.1:6379> KEYS PATTERN
    
    -------------------------------------------------------------------------------------
    #返回值
    符合给定模式的 key 列表 (Array)。
    
    -------------------------------------------------------------------------------------
    #实例
    首先创建一些 key,并赋上对应值:
    redis 127.0.0.1:6379> SET runoob1 redis
    OK
    redis 127.0.0.1:6379> SET runoob2 mysql
    OK
    redis 127.0.0.1:6379> SET runoob3 mongodb
    OK
    
    #查找以 runoob 为开头的 key:
    redis 127.0.0.1:6379> KEYS runoob*
    1) "runoob3"
    2) "runoob1"
    3) "runoob2"
    
    
    
    
    • 11 PERSIST

    Redis PERSIST 命令用于移除给定 key 的过期时间,使得 key 永不过期。
    
    ------------------------------------------------------------------------------------------------
    语法
    redis PERSIST 命令基本语法如下:
    redis 127.0.0.1:6379> PERSIST KEY_NAME
    
    ------------------------------------------------------------------------------------------------
    返回值
    当过期时间移除成功时,返回 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
    
    
    
    • 12 PTTL

    Redis Pttl 命令以毫秒为单位返回 key 的剩余过期时间。
    
    ------------------------------------------------------------------------------------------------
    # 语法
    redis Pttl 命令基本语法如下:
    redis 127.0.0.1:6379> PTTL KEY_NAME
    
    -------------------------------------------------------------------------------------
    #返回值
    当过期时间移除成功时,返回 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
    
    
    • 13 RANDOMKEY

    Redis RANDOMKEY 命令从当前数据库中随机返回一个 key 。
    
    -------------------------------------------------------------------------------------
    #语法
    redis RANDOMKEY 命令基本语法如下:
    redis 127.0.0.1:6379> RANDOMKEY 
    
    -------------------------------------------------------------------------------------
    #返回值
    当数据库不为空时,返回一个 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)
    
    • 14 RENAME

    Redis Rename 命令用于修改 key 的名称 。
    
    -------------------------------------------------------------------------------------
    #语法
    redis Rename 命令基本语法如下:
    redis 127.0.0.1:6379> RENAME OLD_KEY_NAME NEW_KEY_NAME
    
    -------------------------------------------------------------------------------------
    #返回值
    改名成功时提示 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"
    
    
    
    • 15 RENAMENX

    Redis Renamenx 命令用于在新的 key 不存在时修改 key 的名称 。
    
    -------------------------------------------------------------------------------------
    #语法
    redis Renamenx 命令基本语法如下:
    redis 127.0.0.1:6379> RENAMENX OLD_KEY_NAME NEW_KEY_NAME
    
    -------------------------------------------------------------------------------------
    返回值
    修改成功时,返回 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"
    
    • 16 TYPE

    Redis Type 命令用于返回 key 所储存的值的类型。
    
    -------------------------------------------------------------------------------------
    语法
    redis Renamenx 命令基本语法如下:
    redis 127.0.0.1:6379> TYPE KEY_NAME 
    
    -------------------------------------------------------------------------------------
    返回值
    返回 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
    
    

    相关文章

      网友评论

        本文标题:8 Redis_Key关键字

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