Redis 基本命令大全
- 一 Redis 鍵(key)
- 1.1 type
- 1.2 pexpireat
- 1.3 expireat
- 1.4 expire
- 1.5 persist
- 1.6 ttl
- 1.7 pttl
- 1.8 rename
- 1.9 renamenx
- 1.10 randomkey
- 1.11 del
- 1.12 exists
- 1.13 keys
- 二 Redis 字符串(string)
- 2.1 set
- 2.2 setex
- 2.3 psetex
- 2.4 setnx
- 2.5 mset
- 2.6 strlen
- 2.7 setrange
- 2.8 getrange
- 2.9 get
- 2.10 mget
- 2.11 getset
- 2.12 incr
- 2.13 incrbyfloat
- 2.14 decr
- 2.15 decrby
- 2.16 append
- 三 Redis 列表(List)
一 Redis 鍵(key)
1.1 type
Type 命令用於返回 key 所儲存的值的類型。
語法:
type keyName
返回值:
返回 key 的數據類型,數據類型有:
none (key不存在)
string (字符串)
list (列表)
set (集合)
zset (有序集)
hash (哈希表)
實例:
set name "zhangsan"
type name
string
1.2 pexpireat
PEXPIREAT 命令用於設置 key 的過期時間,已毫秒爲單位。key 過期後將不再可用。
語法:
pexpireat keyName 毫秒值
返回值:
設置成功返回 1
key不存在或不能爲key設置過期時間時返回 0
實例:
pexpireat name 10000000
1.3 expireat
EXPIREAT 命令用於以時間戳的方式設置key的過期時間,過期後key不可用
語法:
expireat keyName 時間戳
返回值:
設置成功返回 1
key不存在或不能爲key設置過期時間時返回 0
實例:
expireat name 1293840000
(integer) 1
1.4 expire
EXPIRE 命令用於以秒的方式設置key的過期時間,過期後key不可用
語法:
expireat keyName 秒值
返回值:
設置成功返回 1
key不存在或不能爲key設置過期時間時返回 0
實例:
expireat name 60
(integer) 1
1.5 persist
PERSIST 命令用於移除指定key的過期時間,使key永不過期
語法:
persist keyName
返回值:
移除成功返回 1
key不存在或沒有爲key設置過期時間返回 0
實例:
persist name
(integer) 1
1.6 ttl
TTL 命令用於返回以秒爲單位的key的剩餘過期時間
語法:
ttl keyName
返回值:
當key不存在時返回-2
當key存在但沒有設置過期時間時返回-1
否則以秒爲單位返回key的剩餘過期時間
實例:
ttl name
(integer) 59
1.7 pttl
PTTL 命令用於返回以毫秒爲單位的key的剩餘過期時間
語法:
pttl keyName
返回值:
當key不存在時返回-2
當key存在但沒有設置過期時間時返回-1
否則以秒爲單位返回key的剩餘過期時間
實例:
pttl name
(integer) 59000
1.8 rename
RENAME 命令用於修改key的名稱
語法:
rename keyName newKeyName
返回值:
改名成功返回 1
改名失敗返回一個錯誤
當keyName和newKeyName 相同時,或者keyName不存在時返回一個錯誤
當newKeyName存在時會覆蓋舊值
實例:
rename name username
1.9 renamenx
RENAMENX 命令用於在新的key不存在時修改key的名稱
語法:
renamenx keyName newKeyName
返回值:
改名成功返回 1
如果newKeyName已經存在了,返回0
如果keyName不存在返回以error
實例:
renamenx name username
(integer) 1 //name存在 username不存在
renamenx name username
(integer) 0 //name存在 username存在
renamenx name username
(error) ERR no such key //name不存在 username存在
備註:renamenx 和 rename 最大的區別在於newKeyName 存在時rename會覆蓋舊值,renamenx會返回0不執行任何操作
1.10 randomkey
RANDOMKEY 命令用於從當前數據庫返回一個隨機的key
語法:
randomkey
返回值:
當數據庫不爲空時返回一個隨機的key
當數據庫爲空時返回一個nil
實例:
randomkey
"name"
1.11 del
DEL 命令用於刪除已存在的key
語法:
del keyName
返回值:
被刪除key的數量
實例:
del name
(integer) 1
1.12 exists
EXISTS 命令用於判斷key是否存在
語法:
exists keyName
返回值:
key存在返回1
key不存在返回0
實例:
exists name
(integer) 1
1.13 keys
EKYS 命令用於檢查所有給定模式的key
語法:
keys 模式
返回值:
符合模式的key的列表
實例:
keys name*
(integer) 1 //返回所有以name開頭的key的列表
二 Redis 字符串(string)
2.1 set
SET 命令用於設置給定key的值,如果key存在就覆寫,無視類型
語法:
set keyName value
返回值:
OK
實例:
set name zhangsan
OK
2.2 setex
SETEX 命令用於給指定的key設置過期時間(單位:秒)和值,如果key已經存在,則覆蓋
語法:
setex keyName 過期時間(秒) value
返回值:
OK
實例:
setex name 60 zhangsan
OK
2.3 psetex
PSETEX 命令用於給指定的key設置過期時間(單位:毫秒)和值,如果key已經存在,則覆蓋
語法:
psetex keyName 過期時間(毫秒) value
返回值:
OK
實例:
psetex name 60000 zhangsan
OK
2.4 setnx
SETNX(set if not exists) 命令用於當key不存在時,給指定的key設置值
語法:
setnx keyName value
返回值:
設置成功返回1
設置失敗返回0
實例:
setnx name zhangsan
(integer) 0
2.5 mset
MSET 命令用於同時設置一個或多個key - value 對
語法:
msetnx key1 value1 key2 value2 ...
返回值:
OK
實例:
mset name1 zhangsan name2 lisi
OK
2.6 strlen
STRLEN 命令用於獲取指定key的字符串的長度
語法:
strlen keyName
返回值:
返回字符串的長度
如果key不是字符串,返回一個error
實例:
strlen name
(integer) 8
2.7 setrange
SETRANGE 命令用於使用指定的字符串替換原字符串,從原字符串的offset位置開始
語法:
setrange key offset(起始位置) value
返回值:
被修改後字符串的長度
實例:
set name zhangsan
setrange name 0 "lisi"
(integer) 8 //這是name的值爲lisigsan 所以長度爲8
2.8 getrange
GETRANGE 命令用於獲取存儲在指定key中字符串的子字符串,截取範圍由start 和 end決定
語法:
getrange key start end
返回值:
截取到的子字符串
實例:
getrange name1 0 5
"zhangs"
2.9 get
GET 命令用於獲取指定key的值,如果key不存在返回nil
語法:
get keyName
返回值:
key的值
如果key不存在返回nil
如果key不是字符串類型,返回error
實例:
get name
"zhangsan"
2.10 mget
MGET 命令用於獲取一個或多個key的值,如果某個key不存在,那麼這個key返回nil
語法:
mget keyName1 keyName2 ...
返回值:
一個包含所有key的值的列表
實例:
mget name name1
"zhangsan"
(nil)
2.11 getset
GETSET 命令用於獲取指定key的值,並設置新值
語法:
getset keyName value
返回值:
返回key的舊值
當key不存在時返回nil,並設置新值
當可以存在,但不是字符串時返回error
實例:
getset name lisi
"zhangsan"
2.12 incr
INCR 命令用於將key存儲的數字增一
如果key不存在,會先初始化爲0,然後在增一
語法:
incr keyName
返回值:
返回incr命令之後key的值
如果key不能轉換爲整數,或者key不是字符串,那麼返回一個error
實例:
incr num
(integer) 1
2.13 incrbyfloat
INCRBYFLOAT 命令用於將key存儲的數字進行浮點數增加操作
如果key不存在,會先初始化爲0,然後在相加
語法:
incrbyfloat keyName floatNum(需要增加的數)
返回值:
返回incrbyfloat命令相加之後key的值
如果key不能轉換爲浮點數,或者key不是字符串,那麼返回一個error
實例:
incrfloat numFloat 2.5
"6.5"
2.14 decr
DECR 命令用於將key存儲的數字減一
如果key不存在,會先初始化爲0,然後在減一
語法:
decr keyName
返回值:
返回decr命令之後key的值
如果key不能轉換爲整數,或者key不是字符串,那麼返回一個error
實例:
decr num
(integer) 0
2.15 decrby
DECRBY 命令用於將key存儲的數字減去指定的值
如果key不存在,會先初始化爲0,然後在進行相減
語法:
decrby keyName num(被減去的整數)
返回值:
返回decrby命令相減之後key的值
如果key不能轉換爲整數,或者key不是字符串,那麼返回一個error
實例:
decrby num 1
(integer) 5
備註:incr decr incrbyfloat decrby 這四個命令中只有incrbyfloat能操作浮點數,其他都不能,可以用incrbyfloat num -3.6 這樣的操作進行浮點數的相減操作
2.16 append
APPEND 命令用於爲指定的key追加值
如果key存在,append命令會將value追加到原來值的末尾
如果key不存在,append命令就將key的值設置爲value,
語法:
append keyName value
返回值:
返回追加字符串後字符串的長度
實例:
append name lisi
(integer) 12
三 Redis 列表(List)
3.1 lpush
LPUSH 命令用於將一個或多個值插入列表頭部,如果key不存在則創建一個空的列表並執行lpush命令
語法:
lpush key value1 value2
返回值:
返回執行lpush命令後列表的長度
如果key不是列表,則返回一個error
實例:
lpush namelist zhangsan lisi
(integer) 2
3.2 lpushx
LPUSHX 命令用於將一個或多個值插入已存在的列表頭部,如果key不存在則操作無效
語法:
lpushx key value1 value2
返回值:
返回執行lpushx命令後列表的長度
實例:
lpushx namelist xiaoming wangmei
(integer) 4
3.3 rpush
RPUSH 命令用於將一個或多個值插入列表尾部(最右邊),如果key不存在則創建一個空的列表並執行rpush命令
語法:
rpush key value1 value2
返回值:
返回執行rpush命令後列表的長度
如果key不是列表,則返回一個error
實例:
rpush namelist wangwu wangermazi
(integer) 4
3.4 rpushx
RPUSHX 命令用於將一個或多個值插入已存在的列表尾部,如果key不存在則操作無效
語法:
rpushx key value1 value2
返回值:
返回執行rpushx命令後列表的長度
實例:
rpushx namelist xiaoli xiaowang
(integer) 6
3.5 lpop
LPOP 命令用於移除並返回列表的第一個元素
語法:
lpop key
返回值:
返回列表的第一個元素
如果key不是列表,則返回一個error
如果key爲空則返回一個nil
實例:
lpop namelist
"lisi"
3.6 rpop
RPOP 命令用於移除並返回列表的最後一個元素
語法:
rpop key
返回值:
返回列表的最後一個元素
如果key不是列表,則返回一個error
如果key爲空則返回一個nil
實例:
rpop namelist
"wangermazi"
3.7 blpop
BLPOP 命令用於移除並返回列表的第一個元素,如果列表沒有元素會阻塞直到等待超時,或發現可彈出的元素爲止。
語法:
blpop key timeout
返回值:
返回一個含有兩個元素的列表,第一個元素爲key,第二個元素爲value
如果列表不存在或者列表爲空,等待超時時間過後,會返回一個nil
實例:
blpop aaaaaa 1
(nil)
(1.00s) //列表不存在 等待超時時間過後,返回一個nil
blpop list 10
1) "list"
2) "zhangsan" //列表裏有元素立馬彈出
blpop list 10 //當列表裏沒有元素時,會在這裏等待
1) "list" //用另一個線程往list裏放入lisi ,會在這裏立馬彈出
2) "wangwu"
(6.51s) //這裏時等待時間
3.8 brpop
BRPOP 命令用於移除並返回列表的最後一個元素,如果列表沒有元素會阻塞直到等待超時,或發現可彈出的元素爲止。
語法:
brpop key timeout
返回值:
返回一個含有兩個元素的列表,第一個元素爲key,第二個元素爲value
如果列表不存在或者列表爲空,等待超時時間過後,會返回一個nil
實例:
brpop aaaaaa 1
(nil)
(1.00s) //列表不存在 等待超時時間過後,返回一個nil
brpop list 10
1) "list"
2) "zhangsan" //列表裏有元素立馬彈出
brpop list 10 //當列表裏沒有元素時,會在這裏等待
1) "list" //用另一個線程往list裏放入lisi ,會在這裏立馬彈出
2) "wangwu"
(6.51s) //這裏時等待時間
3.9 lrange
LRANGE 命令用於返回列表內指定區間的元素,區間偏移量由start和end指定,
數字0表示第一個元素,1表示第二個元素 ,以此類推
數字-1表示最後一個元素,-2便是倒數第二個元素,以此類推
語法:
lrange key start end
返回值:
返回一個包含指定區別內元素的列表
實例:
lrange list 0 -1
1) "zhaoliu"
2) "wangwu"
3) "lisi"
4) "zhangsan"
3.10 rpoplpush
RPOPLPUSH 命令用於移除列表的最後一個元素,將他添加到另一個列表並返回
語法:
rpoplpush oldList newList
返回值:
被彈出的元素
實例:
RPOPLPUSH list mylist
"zhangsan" //將list中的第最後一個元素取出並將它放入新的列表mylist中
3.11 brpoplpush
BRPOPLPUSH 命令用於移除列表的最後一個元素,將他添加到另一個列表並返回,如果列表沒有元素會阻塞直到等待超時,或發現可彈出的元素爲止。
語法:
brpoplpush oldList newList
返回值:
被彈出的元素
實例:
BRPOPLPUSH mylist list 10
"zhangsan" //原理和blpop和brpop命令相似
3.12 linsert
LINSERT 命令用於在列表元素的前或後插入元素,當元素不存在時不執行任何操作,當列表不存在時,不執行任何操作
語法:
linsert key before|after existingValue newValue
返回值:
返回列表長度
如果沒有找到指定元素返回-1
如果key不存在或者爲空返回0
實例:
127.0.0.1:6379[3]> lrange list 0 -1
1) "zhaoliu"
2) "wangwu"
3) "lisi"
4) "zhangsan"
127.0.0.1:6379[3]> LINSERT list before wangwu xiaoming //在wuangwu前面插入xiaoming
(integer) 5
127.0.0.1:6379[3]> lrange list 0 -1
1) "zhaoliu"
2) "xiaoming"
3) "wangwu"
4) "lisi"
5) "zhangsan"
127.0.0.1:6379[3]> linsert list after aaa bbb
(integer) -1 //aaa不存在返回-1
127.0.0.1:6379[3]> linsert list2 after aaa bbb
(integer) 0 //list2不存在返回0
3.13 lindex
LINDEX 命令用於通過索引獲取元素的值
數字0表示第一個元素,1表示第二個元素 ,以此類推
數字-1表示最後一個元素,-2便是倒數第二個元素,以此類推
語法:
lindex key index
返回值:
返回指定下標元素的值
如果下標不存在返回nil
實例:
127.0.0.1:6379[3]> lindex list 2
"wangwu"
3.14 lset
LSET 命令用於通過索引設置元素的值
數字0表示第一個元素,1表示第二個元素 ,以此類推
數字-1表示最後一個元素,-2便是倒數第二個元素,以此類推
語法:
lset key index value
返回值:
設置成功返回OK
如果索引不存在或者對一個空的列表進行lset時返回error
實例:
127.0.0.1:6379[3]> lrange list 0 -1
1) "zhaoliu"
2) "xiaoming"
3) "wangwu"
4) "lisi"
5) "zhangsan"
127.0.0.1:6379[3]> lset list -1 laozhao
OK
127.0.0.1:6379[3]> lrange list 0 -1
1) "zhaoliu"
2) "xiaoming"
3) "wangwu"
4) "lisi"
5) "laozhao"
3.15 llen
LLEN 命令用於返回列表的長度
如果key不存在返回0
如果key不是列表返回error
語法:
llen key
返回值:
返回列表的長度
實例:
127.0.0.1:6379[3]> llen list
(integer) 5
3.16 lrem
LREM 命令用於根據參數count的值,移除於value相等的元素
count > 0 移除與count個與value相等的元素
count=0 移除所有與value相等的元素
語法:
lrem key count value
返回值:
被移除元素的數量
實例:
127.0.0.1:6379[3]> lrange list 0 -1
1) "zhaoliu"
2) "xiaoming"
3) "wangwu"
4) "lisi"
5) "laozhao"
127.0.0.1:6379[3]> lrem list 1 lisi //移除一個lisi
(integer) 1
127.0.0.1:6379[3]> lrange list 0 -1
1) "zhaoliu"
2) "xiaoming"
3) "wangwu"
4) "laozhao"
接下文: Redis 基本命令大全 二.