REDIS 鍵命令整理

redis 鍵命令

Redis 鍵命令用於管理 redis 的鍵. 原文redis

語法數據庫

COMMAND key [key ...]

鍵命令

DEL

刪除指定鍵, 返回被刪除鍵的數量, 若鍵不存在直接忽略. 官方文檔數據結構

語法dom

DEL key [key ...]

返回值編碼

  • 被刪除鍵的數量

示例調試

redis> SET key1 "Hello"
"OK"
redis> SET key2 "World"
"OK"
redis> DEL key1 key2 key3
(integer) 2

EXISTS

檢測指定鍵是否存在. 官方文檔code

語法對象

EXISTS key [key ...]

返回值排序

  • 存在的鍵的數量

示例ip

redis> SET key1 "Hello"
"OK"
redis> EXISTS key1
(integer) 1
redis> EXISTS nosuchkey
(integer) 0
redis> SET key2 "World"
"OK"
redis> EXISTS key1 key2 nosuchkey
(integer) 2

EXPIRE

設置鍵 key 的有效期, 若 key 有效期已存在則更新. 過了有效期後, 鍵 key 會被自動刪除 官方文檔

語法

EXPIRE key seconds
  • seconds 有效期, 單位秒.

返回值

  • 1 有效期被設值成功
  • 0 key 不存在

示例

redis> SET mykey "Hello"
"OK"
redis> EXPIRE mykey 10
(integer) 1
redis> TTL mykey
(integer) 10
redis> TTL mykey    -- 10 秒執行
(integer) -2       -- key 不存在返回 -2     
redis> SET mykey "Hello World"
"OK"
redis> TTL mykey
(integer) -1       -- key 沒有有效期關聯返回 -1

PEXPIRE 同 EXPIRE, 區別 PEXPIRE 單位爲毫秒

EXPIREAT

功能相似 EXPIRE, 不過此命令設置的有效期是時間點, 值爲自1970年1月1日以來的秒數. 官方文檔

語法

EXPIREAT key timestamp
  • timestamp 時間戳

返回值

  • 1 有效期被設值成功
  • 0 key 不存在

示例

redis> SET mykey "Hello"
"OK"
redis> EXISTS mykey
(integer) 1
redis> EXPIREAT mykey 1293840000
(integer) 1
redis> EXISTS mykey
(integer) 0

PEXPIREAT 同 EXPIREAT, 區別 PEXPIREAT 單位爲毫秒

KEYS

返回全部匹配指定模式的 KEY. 該指令一般用於調試問題, 儘可能避免在應用代碼中使用, 如有相似需求能夠考慮使用 SCAN 命令或者 sets 數據結構. 官方文檔

語法

KEYS pattern

支持的模式 pattern 的規則以下:

  • h?llo 匹配 hello, hallo, hxllo ...
  • h*llo 匹配 hllo, heeeello ...
  • h[ae]llo 匹配 hello, hallo. 不能匹配 hillo
  • h[^e]llo 匹配 hallo, hbllo ... 不能匹配 hello
  • h[a-b]llo 匹配 hallo and hbllo

返回值

  • 匹配 key 列表

示例

redis> MSET firstname Jack lastname Stuntman age 35
"OK"
redis> KEYS *name*
1) "lastname"
2) "firstname"
redis> KEYS a??
1) "age"
redis> KEYS *
1) "lastname"
2) "age"
3) "firstname"

MIGATE

遷移指定 KEY. 官方文檔

語法

MIGRATE host port key|"" destination-db timeout [COPY] [REPLACE] [KEYS key [key ...]]

選項

  • COPY 不刪除當前實例中的 KEY
  • REPLACE 替換遠程實例已存在的 KEY
  • KEYS 指定 KEY, 若爲空則爲全部 KEY

返回值

  • OK 命令執行成功
  • NOKEY 當前實例爲空

實例

MIGRATE 192.168.1.34 6379 "" 0 5000 KEYS key1 key2 key3

MOVE

將指定 KEY 移至指定 DB. 官方文檔

語法

MOVE key db

返回值

  • 1 指定 KEY 被移動成功
  • 0 指定 KEY 不存在

OBJECT

查看 Redis 的內部對象, 一般用於調試. 官方文檔

語法

OBJECT subcommand [arguments [arguments ...]]

OBJECT 命令支持的子命令:

  • OBJECT REFCOUNT <key> 返回指定 KEY 關聯值引用的數量.
  • OBJECT ENCODING <key> 返回指定 KEY 關聯值存貯的編碼方式
  • OBJECT IDLETIME <key> 返回指定 KEY 未使用的時長
  • OBJECT FREQ <key> 返回指定 KEY 使用頻率
  • OBJECT HELP 打印該命令幫助信息

示例

redis> lpush mylist "Hello World"
(integer) 4
redis> object refcount mylist
(integer) 1
redis> object encoding mylist
"ziplist"
redis> object idletime mylist
(integer) 10

PERSIST

移除 key 的過時時間. 官方文檔

語法

PERSIST key

返回值

  • 1 指定 key 的過時時間被移除
  • 0 指定 key 不存在或未設置過時時間

示例

redis> SET mykey "Hello"
"OK"
redis> EXPIRE mykey 10
(integer) 1
redis> TTL mykey
(integer) 10
redis> PERSIST mykey
(integer) 1
redis> TTL mykey
(integer) -1

RANDOMKEY

從當前數據庫中返回一個隨機 KEY. 官方文檔

返回值

  • key 一個隨機 KEY
  • nil 數據庫爲空時返回

RENAME

重命名 KEY, 若新 KEY 已存在則會被覆蓋. 官方文檔

語法

RENAME key newkey

示例

redis> SET mykey "Hello"
"OK"
redis> RENAME mykey myotherkey
"OK"
redis> GET myotherkey
"Hello"

RENAME

重命名 KEY, 若新 KEY 已存在則會出錯. 官方文檔

語法

RENAMENX key newkey

示例

redis> SET mykey "Hello"
"OK"
redis> SET myotherkey "World"
"OK"
redis> RENAMENX mykey myotherkey
(integer) 0
redis> GET myotherkey
"World"

SCAN

遍歷當前數據庫 key. 官方文檔

語法

RENAMENX cursor
  • cursor 起始光標

返回值

  • cursor 下次 SCAN 的其實位置

示例

redis> SET mykey "Hello"
"OK"
redis> SET myotherkey "World"
"OK"
redis> RENAMENX mykey myotherkey
(integer) 0
redis> GET myotherkey
"World"

SORT

排序數據結構 list, set, sorted set 的 key. 官方文檔

示例

SORT mylist   # 默認升序 key 爲數字
SORT mylist DESC  # 降序 key 爲數字
SORT mylist ALPHA # 字典序 key 爲字符串
SORT mylist LIMIT 0 10 # 分頁
SORT mylist LIMIT 0 5 ALPHA DESC # 選項組合
SORT mylist BY weight_* # 外部 KEY 排序  weight_1, weight_2, ...
SORT mylist BY nosort # 跳過排序 KEY, 獲取外部 KEY
SORT mylist BY weight_* GET object_* # 獲取指定外部 KEY, GET 選項能夠使用屢次, 獲取 GET 自己使用模式符 #, 如: SORT mylist BY weight_* GET object_* GET #
SORT mylist BY weight_* STORE resultkey # 存貯排序結果  
SORT mylist BY weight_*->fieldname GET object_*->fieldname # 指定對象排序的 KEY

TOUCH

更新 KEY 的最後訪問時間, 若 KEY 不存在則忽略. 官方文檔

語法

TOUCH key [key ...]

返回值

  • 返回被更新 KEY 的個數.

示例

redis> SET key1 "Hello"
"OK"
redis> SET key2 "World"
"OK"
redis> TOUCH key1 key2
(integer) 2

TTL

獲取的 KEY 的過時時間. 官方文檔

語法

TTL key

返回值

  • 指定 key 的過時時間
  • -2 指定 key 不存在
  • -1 指定 key 未設置過時時間

示例

redis> SET mykey "Hello"
"OK"
redis> EXPIRE mykey 10
(integer) 1
redis> TTL mykey
(integer) 10

** PTTL 同 TTL, 區別 PTTL 返回時間單位是毫秒**

TYPE

獲取指定 KEY 的數據類型. 官方文檔

語法

TYPE key

返回值

  • 指定 key 的過時時間
  • none 指定 key 不存在

示例

redis> SET key1 "value"
"OK"
redis> LPUSH key2 "value"
(integer) 1
redis> SADD key3 "value"
(integer) 1
redis> TYPE key1
"string"
redis> TYPE key2
"list"
redis> TYPE key3
"set"

同 DEL 指令, UNLINK 是從 KEY 空間中移除指定 KEY, 是內存級刪除非阻塞. 實際刪除將在後續持久化中發生. 官方文檔

語法

UNLINK key [key ...]

返回值

  • 被移除 KEY 的數量.

示例

redis> SET key1 "Hello"
"OK"
redis> SET key2 "World"
"OK"
redis> UNLINK key1 key2 key3
(integer) 2

WAIT (待完善)

阻塞當前客戶端直到以前全部寫命令被成功備份或到達指定的備份命令的數量, 若指定的超時(單位毫秒)到達將返回還未成功備份的命令數量. 官方文檔

語法

WAIT numreplicas timeout
  • numreplicas 備份的數量
  • timeout 阻塞超時時間

返回值

  • 備份的數量

示例

> SET foo bar
OK
> WAIT 1 0
(integer) 1
> WAIT 2 1000
(integer) 1
相關文章
相關標籤/搜索