8 Redis_Key关键字

  • 实例

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容

  • 1 keys 返回满足给定 pattern 的所有 key *代表所有 127.0.0.1:6379> keys ...
    鬭闢阅读 656评论 0 0
  • 1 Redis介绍1.1 什么是NoSql为了解决高并发、高可扩展、高可用、大数据存储问题而产生的数据库解决方...
    克鲁德李阅读 5,265评论 0 36
  • Key(键) 1.DEL DEL key [key ...]删除给定的一个或多个key。不存在的key会被忽略。返...
    layjoy阅读 757评论 0 1
  • Redis 命令用于在 redis 服务上执行操作。 要在 redis 服务上执行命令需要一个 redis 客户端...
    程序员祝融阅读 278评论 0 0
  • 昨晚做了一个梦,说不上噩梦或者美梦之分,以至于梦里的场景,大多也恍恍惚惚不清楚了,唯独记得自己在隐瞒怀孕的情况下,...
    江心阅读 388评论 0 2