Redis命令是用於在Redis服務器上執行一些操作。
要在Redis服務器上運行命令,需要一個Redis客戶端。Redis客戶端在Redis包中有提供,這個包在我們前面的安裝教程中就有安裝過了。
語法
以下是Redis客戶端的基本語法。
[yiibai@ubuntu:~]$ redis-cli
示例
以下示例說明了如何啟動Redis客戶端。
要啟動Redis客戶端,請打開終端並鍵入命令redis-cli。 這將連接到您的本地Redis服務器,現在可以運行任何的Redis命令了。
[yiibai@ubuntu:~]$redis-cli
redis 127.0.0.1:6379>
redis 127.0.0.1:6379> PING
PONG
在上面的示例中,連接到到在本地機器上運行的Redis服務器並執行PING命令,該命令檢查服務器是否正在運行。
在遠程服務器上運行命令
要在Redis遠程服務器上運行命令,需要通過客戶端redis-cli連接到服務器
語法
[yiibai@ubuntu:~]$ redis-cli -h host -p port -a password
示例
以下示例顯示如何連接到Redis遠程服務器,在主機(host)127.0.0.1,端口(port)6379上運行,並使用密碼為 mypass。
[yiibai@ubuntu:~]$ redis-cli -h 127.0.0.1 -p 6379 -a "mypass" redis 127.0.0.1:6379>redis 127.0.0.1:6379> PING
PONG
Redis鍵命令用於管理Redis中的鍵。以下是使用redis鍵命令的語法。
Redis鍵命令
下表列出了與鍵相關的一些基本命令。
| 編號 | 命令 | 描述 |
|---|---|---|
| 1 | DEL key | 此命令刪除一個指定鍵(如果存在)。 |
| 2 | DUMP key | 此命令返回存儲在指定鍵的值的序列化版本。 |
| 3 | EXISTS key | 此命令檢查鍵是否存在。 |
| 4 | EXPIRE key seconds | 設置鍵在指定時間秒數之后到期/過期。 |
| 5 | EXPIREAT key timestamp | 設置在指定時間戳之后鍵到期/過期。這里的時間是Unix時間戳格式。 |
| 6 | PEXPIRE key milliseconds | 設置鍵的到期時間(以毫秒為單位)。 |
| 7 | PEXPIREAT key milliseconds-timestamp | 以Unix時間戳形式來設置鍵的到期時間(以毫秒為單位)。 |
| 8 | KEYS pattern | 查找與指定模式匹配的所有鍵。 |
| 9 | MOVE key db | 將鍵移動到另一個數據庫。 |
| 10 | PERSIST key | 刪除指定鍵的過期時間,得永生。 |
| 11 | PTTL key | 獲取鍵的剩余到期時間。 |
| 12 | RANDOMKEY | 從Redis返回一個隨機的鍵。 |
| 13 | RENAME key newkey | 更改鍵的名稱。 |
| 14 | PTTL key | 獲取鍵到期的剩余時間(以毫秒為單位)。 |
| 15 | RENAMENX key newkey | 如果新鍵不存在,重命名鍵。 |
| 16 | TYPE key | 返回存儲在鍵中的值的數據類型。 |
Redis字符串命令
下表列出了一些用於在Redis中管理字符串的基本命令。
| 編號 | 命令 | 描述說明 |
|---|---|---|
| 1 | SET key value | 此命令設置指定鍵的值。 |
| 2 | GET key | 獲取指定鍵的值。 |
| 3 | GETRANGE key start end | 獲取存儲在鍵上的字符串的子字符串。 |
| 4 | GETSET key value | 設置鍵的字符串值並返回其舊值。 |
| 5 | GETBIT key offset | 返回在鍵處存儲的字符串值中偏移處的位值。 |
| 6 | MGET key1 [key2..] | 獲取所有給定鍵的值 |
| 7 | SETBIT key offset value | 存儲在鍵上的字符串值中設置或清除偏移處的位 |
| 8 | SETEX key seconds value | 使用鍵和到期時間來設置值 |
| 9 | SETNX key value | 設置鍵的值,僅當鍵不存在時 |
| 10 | SETRANGE key offset value | 在指定偏移處開始的鍵處覆蓋字符串的一部分 |
| 11 | STRLEN key | 獲取存儲在鍵中的值的長度 |
| 12 | MSET key value [key value …] | 為多個鍵分別設置它們的值 |
| 13 | MSETNX key value [key value …] | 為多個鍵分別設置它們的值,僅當鍵不存在時 |
| 14 | PSETEX key milliseconds value | 設置鍵的值和到期時間(以毫秒為單位) |
| 15 | INCR key | 將鍵的整數值增加1 |
| 16 | INCRBY key increment | 將鍵的整數值按給定的數值增加 |
| 17 | INCRBYFLOAT key increment | 將鍵的浮點值按給定的數值增加 |
| 18 | DECR key | 將鍵的整數值減1 |
| 19 | DECRBY key decrement | 按給定數值減少鍵的整數值 |
| 20 | APPEND key value | 將指定值附加到鍵 |
Redis哈希命令
下表列出了與哈希/散列相關的一些基本命令。
| 序號 | 命令 | 說明 |
|---|---|---|
| 1 | HDEL key field2 [field2] | 刪除一個或多個哈希字段。 |
| 2 | HEXISTS key field | 判斷是否存在散列字段。 |
| 3 | HGET key field | 獲取存儲在指定鍵的哈希字段的值。 |
| 4 | HGETALL key | 獲取存儲在指定鍵的哈希中的所有字段和值 |
| 5 | HINCRBY key field increment | 將哈希字段的整數值按給定數字增加 |
| 6 | HINCRBYFLOAT key field increment | 將哈希字段的浮點值按給定數值增加 |
| 7 | HKEYS key | 獲取哈希中的所有字段 |
| 8 | HLEN key | 獲取散列中的字段數量 |
| 9 | HMGET key field1 [field2] | 獲取所有給定哈希字段的值 |
| 10 | HMSET key field1 value1 [field2 value2 ] | 為多個哈希字段分別設置它們的值 |
| 11 | HSET key field value | 設置散列字段的字符串值 |
| 12 | HSETNX key field value | 僅當字段不存在時,才設置散列字段的值 |
| 13 | HVALS key | 獲取哈希中的所有值 |
Redis列表命令
下表列出了與列表相關的一些基本命令。
| 序號 | 命令 | 說明 |
|---|---|---|
| 1 | BLPOP key1 [key2 ] timeout | 刪除並獲取列表中的第一個元素,或阻塞,直到有一個元素可用 |
| 2 | BRPOP key1 [key2 ] timeout | 刪除並獲取列表中的最后一個元素,或阻塞,直到有一個元素可用 |
| 3 | BRPOPLPUSH source destination timeout | 從列表中彈出值,將其推送到另一個列表並返回它; 或阻塞,直到一個可用 |
| 4 | LINDEX key index | 通過其索引從列表獲取元素 |
| 5 | LINSERT key BEFORE/AFTER pivot value | 在列表中的另一個元素之前或之后插入元素 |
| 6 | LLEN key | 獲取列表的長度 |
| 7 | LPOP key | 刪除並獲取列表中的第一個元素 |
| 8 | LPUSH key value1 [value2] | 將一個或多個值添加到列表 |
| 9 | LPUSHX key value | 僅當列表存在時,才向列表添加值 |
| 10 | LRANGE key start stop | 從列表中獲取一系列元素 |
| 11 | LREM key count value | 從列表中刪除元素 |
| 12 | LSET key index value | 通過索引在列表中設置元素的值 |
| 13 | LTRIM key start stop | 修剪列表的指定范圍 |
| 14 | RPOP key | 刪除並獲取列表中的最后一個元素 |
| 15 | RPOPLPUSH source destination | 刪除列表中的最后一個元素,將其附加到另一個列表並返回 |
| 16 | RPUSH key value1 [value2] | 將一個或多個值附加到列表 |
| 17 | RPUSHX key value | 僅當列表存在時才將值附加到列表 |
Redis集合命令
下表列出了與集合相關的一些基本命令。
| 序號 | 命令 | 說明 |
|---|---|---|
| 1 | SADD key member1 [member2] | 將一個或多個成員添加到集合 |
| 2 | SCARD key | 獲取集合中的成員數 |
| 3 | SDIFF key1 [key2] | 減去多個集合 |
| 4 | SDIFFSTORE destination key1 [key2] | 減去多個集並將結果集存儲在鍵中 |
| 5 | SINTER key1 [key2] | 相交多個集合 |
| 6 | SINTERSTORE destination key1 [key2] | 交叉多個集合並將結果集存儲在鍵中 |
| 7 | SISMEMBER key member | 判斷確定給定值是否是集合的成員 |
| 8 | SMOVE source destination member | 將成員從一個集合移動到另一個集合 |
| 9 | SPOP key | 從集合中刪除並返回隨機成員 |
| 10 | SRANDMEMBER key [count] | 從集合中獲取一個或多個隨機成員 |
| 11 | SREM key member1 [member2] | 從集合中刪除一個或多個成員 |
| 12 | SUNION key1 [key2] | 添加多個集合 |
| 13 | SUNIONSTORE destination key1 [key2] | 添加多個集並將結果集存儲在鍵中 |
| 14 | SSCAN key cursor [MATCH pattern] [COUNT count] | 遞增地迭代集合中的元素 |
Redis集排序集合命令
Redis HyperLogLog是一種使用隨機化的算法,以少量內存提供集合中唯一元素數量的近似值。
HyperLogLog 可以接受多個元素作為輸入,並給出輸入元素的基數估算值:
- 基數:集合中不同元素的數量。比如 {‘apple’, ‘banana’, ‘cherry’, ‘banana’, ‘apple’} 的基數就是 3 。
- 估算值:算法給出的基數並不是精確的,可能會比實際稍微多一些或者稍微少一些,但會控制在合理的范圍之內。
HyperLogLog 的優點是,即使輸入元素的數量或者體積非常非常大,計算基數所需的空間總是固定的、並且是很小的。
在 Redis 里面,每個 HyperLogLog 鍵只需要花費 12 KB 內存,就可以計算接近 2^64 個不同元素的基數。這和計算基數時,元素越多耗費內存就越多的集合形成鮮明對比。
但是,因為 HyperLogLog 只會根據輸入元素來計算基數,而不會儲存輸入元素本身,所以
HyperLogLog 不能像集合那樣,返回輸入的各個元素。
下表列出了 HyperLogLog 相關的一些基本命令。
| 序號 | 命令 | 說明 |
|---|---|---|
| 1 | PFADD key element [element …] | 將指定的元素添加到指定的HyperLogLog 中。 |
| 2 | PFCOUNT key [key …] | 返回給定 HyperLogLog 的基數估算值。 |
| 3 | PFMERGE destkey sourcekey [sourcekey …] | 將多個 HyperLogLog 合並為一個 HyperLogLog |
Redis發布訂閱(pub/sub)是一種消息通信模式:發送者(pub)發送消息,訂閱者(sub)接收消息。
Redis 發布訂閱(pub/sub)實現了消息系統,發送者(在redis術語中稱為發布者)在接收者(訂閱者)接收消息時發送消息。傳送消息的鏈路稱為信道。
在Redis中,客戶端可以訂閱任意數量的信道。
Redis發布訂閱命令
下表列出了與Redis發布訂閱相關的一些基本命令。
| 序號 | 命令 | 說明 |
|---|---|---|
| 1 | PSUBSCRIBE pattern [pattern …] | 訂閱一個或多個符合給定模式的頻道。 |
| 2 | PUBSUB subcommand [argument [argument …]] | 查看訂閱與發布系統狀態。 |
| 3 | PUBLISH channel message | 將信息發送到指定的頻道。 |
| 4 | PUNSUBSCRIBE [pattern [pattern …]] | 退訂所有給定模式的頻道。 |
| 5 | SUBSCRIBE channel [channel …] | 訂閱給定的一個或多個頻道的信息。 |
| 6 | UNSUBSCRIBE [channel [channel …]] | 退訂給定的頻道。 |
Redis事務允許在單個步驟中執行一組命令。以下是事務的兩個屬性:
- 事務中的所有命令作為單個隔離操作並按順序執行。不可以在執行Redis事務的中間向另一個客戶端發出的請求。
- Redis事務也是原子的。原子意味着要么處理所有命令,要么都不處理。
語法示例
Redis事務由命令MULTI命令啟動,然后需要傳遞一個應該在事務中執行的命令列表,然后整個事務由EXEC命令執行。
redis 127.0.0.1:6379> MULTI
OK
List of commands here
redis 127.0.0.1:6379> EXEC
示例
以下示例說明了如何啟動和執行Redis事務。
redis 127.0.0.1:6379> MULTI
OK
redis 127.0.0.1:6379> SET mykey "redis"
QUEUED
redis 127.0.0.1:6379> GET mykey
QUEUED
redis 127.0.0.1:6379> INCR visitors
QUEUED
redis 127.0.0.1:6379> EXEC
1) OK
2) "redis"
3) (integer) 1
Redis事務命令
下表列出了與Redis事務相關的一些基本命令。
| 序號 | 命令 | 說明 |
|---|---|---|
| 1 | DISCARD | 丟棄在MULTI之后發出的所有命令 |
| 2 | EXEC | 執行MULTI后發出的所有命令 |
| 3 | MULTI | 標記事務塊的開始 |
| 4 | UNWATCH | 取消 WATCH 命令對所有 key 的監視。 |
| 5 | WATCH key [key …] | 監視給定的鍵以確定MULTI / EXEC塊的執行 |
Redis腳本用於使用Lua解釋器來執行腳本。從Redis 2.6.0版開始內置到Redis中。使用腳本的命令是EVAL命令。
語法
以下是EVAL命令的基本語法。
redis 127.0.0.1:6379> EVAL script numkeys key [key ...] arg [arg ...]
示例
以下示例說明了Redis腳本的工作原理。
redis 127.0.0.1:6379> EVAL "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1
key2 first second
1) "key1"
2) "key2"
3) "first"
4) "second"
Redis事務命令
下表列出了與Redis腳本相關的一些基本命令。
| 序號 | 命令 | 說明 |
|---|---|---|
| 1 | EVAL script numkeys key [key …] arg [arg …] | 執行一個Lua腳本。 |
| 2 | EVALSHA sha1 numkeys key [key …] arg [arg …] | 執行一個Lua腳本。 |
| 3 | SCRIPT EXISTS script [script …] | 檢查腳本緩存中是否存在腳本。 |
| 4 | SCRIPT FLUSH | 從腳本緩存中刪除所有腳本。 |
| 5 | SCRIPT KILL | 殺死當前正在執行的腳本。 |
| 6 | SCRIPT LOAD script | 將指定的Lua腳本加載到腳本緩存中。 |
Redis中的連接命令基本上是用於管理與Redis服務器的客戶端連接。
示例
以下示例說明客戶端如何向Redis服務器驗證自身,並檢查服務器是否正在運行。
redis 127.0.0.1:6379> AUTH "password"
OK
redis 127.0.0.1:6379> PING
PONG
Redis連接命令
下表列出了與Redis連接相關的一些基本命令。
| 序號 | 命令 | 說明 |
|---|---|---|
| 1 | AUTH password | 使用給定的密碼驗證服務器 |
| 2 | ECHO message | 打印給定的字符串信息 |
| 3 | PING | 檢查服務器是否正在運行 |
| 4 | QUIT | 關閉當前連接 |
| 5 | SELECT index | 更改當前連接的所選數據庫 |
Redis服務器命令基本上是用於管理Redis服務器。
示例
以下示例說明了如何獲取有關服務器的所有統計信息和信息。
127.0.0.1:6379> info
# Server
redis_version:2.8.4
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:8f6097d7914679ca
redis_mode:standalone
os:Linux 3.19.0-25-generic i686
arch_bits:32
multiplexing_api:epoll
gcc_version:4.8.2
process_id:1004
run_id:1e53acea2aa628199c4e438a3ed815d96eebc036
tcp_port:6379
uptime_in_seconds:888450
uptime_in_days:10
hz:10
lru_clock:1861984
config_file:/etc/redis/redis.conf
# Clients
connected_clients:1
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0
# Memory
used_memory:424872
used_memory_human:414.91K
used_memory_rss:6709248
used_memory_peak:424464
used_memory_peak_human:414.52K
used_memory_lua:22528
mem_fragmentation_ratio:15.79
mem_allocator:jemalloc-3.4.1
# Persistence
loading:0
rdb_changes_since_last_save:0
rdb_bgsave_in_progress:0
rdb_last_save_time:1486607123
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:0
rdb_current_bgsave_time_sec:-1
aof_enabled:0
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:-1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
# Stats
total_connections_received:1
total_commands_processed:263
instantaneous_ops_per_sec:0
rejected_connections:0
sync_full:0
sync_partial_ok:0
sync_partial_err:0
expired_keys:0
evicted_keys:0
keyspace_hits:257
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:4793
# Replication
role:master
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
# CPU
used_cpu_sys:24.65
used_cpu_user:15.84
used_cpu_sys_children:0.08
used_cpu_user_children:0.00
# Keyspace
db0:keys=14,expires=0,avg_ttl=0
db1:keys=1,expires=0,avg_ttl=0
127.0.0.1:6379>
Redis服務器命令
下表列出了與Redis服務器相關的一些基本命令。
| 序號 | 命令 | 說明 |
|---|---|---|
| 1 | BGREWRITEAOF | 異步重寫僅追加的文件 |
| 2 | BGSAVE | 將數據集異步保存到磁盤 |
| 3 | CLIENT KILL [ip:port] [ID client-id] | 殺死或斷開指定的客戶端的連接 |
| 4 | CLIENT LIST | 獲取到服務器的客戶端連接列表 |
| 5 | CLIENT GETNAME | 獲取當前連接的名稱 |
| 6 | CLIENT PAUSE timeout | 在指定時間內停止處理來自客戶端的命令 |
| 7 | CLIENT SETNAME connection-name | 設置當前連接名稱 |
| 8 | CLUSTER SLOTS | 獲取群集插槽到節點映射的數組 |
| 9 | COMMAND | 獲取Redis命令詳細信息的數組 |
| 10 | COMMAND COUNT | 獲取Redis命令的總數 |
| 11 | COMMAND GETKEYS | 提取鍵給出一個完整的Redis的命令 |
| 12 | BGSAVE | 將數據集異步保存到磁盤 |
| 13 | COMMAND INFO command-name [command-name …] | 獲取特定Redis命令詳細信息的數組 |
| 14 | CONFIG GET parameter | 獲取配置參數的值 |
| 15 | CONFIG REWRITE | 使用內存中配置來重寫配置文件 |
| 16 | CONFIG SET parameter value | 將配置參數設置為給定值 |
| 17 | CONFIG RESETSTAT | 重置由INFO返回的統計信息 |
| 18 | DBSIZE | 返回所選數據庫中的鍵數量 |
| 19 | DEBUG OBJECT key | 獲取有關鍵的調試信息 |
| 20 | DEBUG SEGFAULT | 使服務器崩潰 |
| 21 | FLUSHALL | 從所有數據庫中刪除所有鍵 |
| 22 | FLUSHDB | 刪除當前數據庫中的所有鍵 |
| 23 | INFO [section] | 獲取有關服務器的信息和統計信息 |
| 24 | LASTSAVE | 獲取上次成功保存到磁盤的UNIX時間戳 |
| 25 | MONITOR | 監聽服務器實時接收的所有請求 |
| 26 | ROLE | 返回實例在復制上下文中的角色 |
| 27 | SAVE | 將數據集同步保存到磁盤 |
| 28 | SHUTDOWN [NOSAVE] [SAVE] | 將數據集同步保存到磁盤,然后關閉服務器 |
| 29 | SLAVEOF host port | 使服務器成為另一個實例的從屬,或將其提升作為主服務器 |
| 30 | SLOWLOG subcommand [argument] | 管理Redis慢查詢日志 |
| 31 | SYNC | 用於復制的命令 |
| 32 | TIME | 返回當前服務器的時間 |
