[关闭]
@Chiang 2019-12-25T15:01:43.000000Z 字数 4742 阅读 440

Redis 键(key)

Redis


del

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

  1. redis 127.0.0.1:6379> SET w3ckey redis
  2. OK
  3. redis 127.0.0.1:6379> DEL w3ckey
  4. (integer) 1

dump

Redis DUMP 命令用于序列化给定 key ,并返回被序列化的值。如果 key 不存在,那么返回 nil 。 否则,返回序列化之后的值。

  1. redis> SET greeting "hello, dumping world!"
  2. OK
  3. redis> DUMP greeting
  4. "\x00\x15hello, dumping world!\x06\x00E\xa0Z\x82\xd8r\xc1\xde"
  5. redis> DUMP not-exists-key
  6. (nil)

exists

Redis EXISTS 命令用于检查给定 key 是否存在。若 key 存在返回 1 ,否则返回 0 。

  1. redis 127.0.0.1:6379> EXISTS runoob-new-key
  2. (integer) 0
  3. redis 127.0.0.1:6379> set runoob-new-key newkey
  4. OK
  5. redis 127.0.0.1:6379> EXISTS runoob-new-key
  6. (integer) 1
  7. redis 127.0.0.1:6379>

expire

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

  1. redis 127.0.0.1:6379> SET runooobkey redis
  2. OK
  3. redis 127.0.0.1:6379> EXPIRE runooobkey 60
  4. (integer) 1

expireat

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

  1. redis 127.0.0.1:6379> SET runoobkey redis
  2. OK
  3. redis 127.0.0.1:6379> EXPIREAT runoobkey 1293840000
  4. (integer) 1
  5. redis 127.0.0.1:6379> EXISTS runoobkey
  6. (integer) 0

pexpire

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

  1. redis> SET mykey "Hello"
  2. "OK"
  3. redis> PEXPIRE mykey 1500
  4. (integer) 1
  5. redis> TTL mykey
  6. (integer) 1
  7. redis> PTTL mykey
  8. (integer) 1498
  9. redis>

pexpireat

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

  1. redis 127.0.0.1:6379> SET runoobkey redis
  2. OK
  3. redis 127.0.0.1:6379> PEXPIREAT runoobkey 1555555555005
  4. (integer) 1

keys

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

  1. redis 127.0.0.1:6379> SET runoob1 redis
  2. OK
  3. redis 127.0.0.1:6379> SET runoob2 mysql
  4. OK
  5. redis 127.0.0.1:6379> SET runoob3 mongodb
  6. OK
  7. redis 127.0.0.1:6379> KEYS runoob*
  8. 1) "runoob3"
  9. 2) "runoob1"
  10. 3) "runoob2"
  11. redis 127.0.0.1:6379> KEYS *
  12. 1) "runoob3"
  13. 2) "runoob1"
  14. 3) "runoob2"

move

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

  1. # key 存在于当前数据库
  2. redis> SELECT 0 # redis默认使用数据库 0,为了清晰起见,这里再显式指定一次。
  3. OK
  4. redis> SET song "secret base - Zone"
  5. OK
  6. redis> MOVE song 1 # 将 song 移动到数据库 1
  7. (integer) 1
  8. redis> EXISTS song # song 已经被移走
  9. (integer) 0
  10. redis> SELECT 1 # 使用数据库 1
  11. OK
  12. redis:1> EXISTS song # 证实 song 被移到了数据库 1 (注意命令提示符变成了"redis:1",表明正在使用数据库 1)
  13. (integer) 1
  14. # 当 key 不存在的时候
  15. redis:1> EXISTS fake_key
  16. (integer) 0
  17. redis:1> MOVE fake_key 0 # 试图从数据库 1 移动一个不存在的 key 到数据库 0,失败
  18. (integer) 0
  19. redis:1> select 0 # 使用数据库0
  20. OK
  21. redis> EXISTS fake_key # 证实 fake_key 不存在
  22. (integer) 0
  23. # 当源数据库和目标数据库有相同的 key 时
  24. redis> SELECT 0 # 使用数据库0
  25. OK
  26. redis> SET favorite_fruit "banana"
  27. OK
  28. redis> SELECT 1 # 使用数据库1
  29. OK
  30. redis:1> SET favorite_fruit "apple"
  31. OK
  32. redis:1> SELECT 0 # 使用数据库0,并试图将 favorite_fruit 移动到数据库 1
  33. OK
  34. redis> MOVE favorite_fruit 1 # 因为两个数据库有相同的 key,MOVE 失败
  35. (integer) 0
  36. redis> GET favorite_fruit # 数据库 0 的 favorite_fruit 没变
  37. "banana"
  38. redis> SELECT 1
  39. OK
  40. redis:1> GET favorite_fruit # 数据库 1 的 favorite_fruit 也是
  41. "apple"

persist

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

  1. redis> SET mykey "Hello"
  2. OK
  3. redis> EXPIRE mykey 10 # 为 key 设置生存时间
  4. (integer) 1
  5. redis> TTL mykey
  6. (integer) 10
  7. redis> PERSIST mykey # 移除 key 的生存时间
  8. (integer) 1
  9. redis> TTL mykey
  10. (integer) -1

pttl

Redis Pttl 命令以毫秒为单位返回 key 的剩余过期时间。当 key 不存在时,返回 -2 。 当 key 存在但没有设置剩余生存时间时,返回 -1 。 否则,以毫秒为单位,返回 key 的剩余生存时间。
注意:在 Redis 2.8 以前,当 key 不存在,或者 key 没有设置剩余生存时间时,命令都返回 -1 。

  1. # 不存在的 key
  2. redis> FLUSHDB
  3. OK
  4. redis> PTTL key
  5. (integer) -2
  6. # key 存在,但没有设置剩余生存时间
  7. redis> SET key value
  8. OK
  9. redis> PTTL key
  10. (integer) -1
  11. # 有剩余生存时间的 key
  12. redis> PEXPIRE key 10086
  13. (integer) 1
  14. redis> PTTL key
  15. (integer) 6179

ttl

Redis TTL 命令以秒为单位返回 key 的剩余过期时间。当 key 不存在时,返回 -2 。 当 key 存在但没有设置剩余生存时间时,返回 -1 。 否则,以秒为单位,返回 key 的剩余生存时间。
注意:在 Redis 2.8 以前,当 key 不存在,或者 key 没有设置剩余生存时间时,命令都返回 -1 。

  1. # 不存在的 key
  2. redis> FLUSHDB
  3. OK
  4. redis> TTL key
  5. (integer) -2
  6. # key 存在,但没有设置剩余生存时间
  7. redis> SET key value
  8. OK
  9. redis> TTL key
  10. (integer) -1
  11. # 有剩余生存时间的 key
  12. redis> EXPIRE key 10086
  13. (integer) 1
  14. redis> TTL key
  15. (integer) 10084

randomkey

Redis RANDOMKEY 命令从当前数据库中随机返回一个 key 。当数据库不为空时,返回一个 key 。 当数据库为空时,返回 nil (windows 系统返回 null)。

  1. # 数据库不为空
  2. redis> MSET fruit "apple" drink "beer" food "cookies" # 设置多个 key
  3. OK
  4. redis> RANDOMKEY
  5. "fruit"
  6. redis> RANDOMKEY
  7. "food"
  8. redis> KEYS * # 查看数据库内所有key,证明 RANDOMKEY 并不删除 key
  9. 1) "food"
  10. 2) "drink"
  11. 3) "fruit"
  12. # 数据库为空
  13. redis> FLUSHDB # 删除当前数据库所有 key
  14. OK
  15. redis> RANDOMKEY
  16. (nil)

rename

Redis Rename 命令用于修改 key 的名称 。改名成功时提示 OK ,失败时候返回一个错误。
OLD_KEY_NAMENEW_KEY_NAME 相同,或者 OLD_KEY_NAME 不存在时,返回一个错误。 当 NEW_KEY_NAME 已经存在时, RENAME 命令将覆盖旧值。

  1. # key 存在且 newkey 不存在
  2. redis> SET message "hello world"
  3. OK
  4. redis> RENAME message greeting
  5. OK
  6. redis> EXISTS message # message 不复存在
  7. (integer) 0
  8. redis> EXISTS greeting # greeting 取而代之
  9. (integer) 1
  10. # 当 key 不存在时,返回错误
  11. redis> RENAME fake_key never_exists
  12. (error) ERR no such key
  13. # newkey 已存在时, RENAME 会覆盖旧 newkey
  14. redis> SET pc "lenovo"
  15. OK
  16. redis> SET personal_computer "dell"
  17. OK
  18. redis> RENAME pc personal_computer
  19. OK
  20. redis> GET pc
  21. (nil)
  22. redis:1> GET personal_computer # 原来的值 dell 被覆盖了
  23. "lenovo"

renamenx

Redis Renamenx 命令用于在新的 key 不存在时修改 key 的名称 。修改成功时,返回 1 。 如果 NEW_KEY_NAME 已经存在,返回 0 。

  1. # newkey 不存在,改名成功
  2. redis> SET player "MPlyaer"
  3. OK
  4. redis> EXISTS best_player
  5. (integer) 0
  6. redis> RENAMENX player best_player
  7. (integer) 1
  8. # newkey存在时,失败
  9. redis> SET animal "bear"
  10. OK
  11. redis> SET favorite_animal "butterfly"
  12. OK
  13. redis> RENAMENX animal favorite_animal
  14. (integer) 0
  15. redis> get animal
  16. "bear"
  17. redis> get favorite_animal
  18. "butterfly"

type

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

  1. # 字符串
  2. redis> SET weather "sunny"
  3. OK
  4. redis> TYPE weather
  5. string
  6. # 列表
  7. redis> LPUSH book_list "programming in scala"
  8. (integer) 1
  9. redis> TYPE book_list
  10. list
  11. # 集合
  12. redis> SADD pat "dog"
  13. (integer) 1
  14. redis> TYPE pat
  15. set

参考资料:
Redis 键(key)

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注