Redis的常用操作命令
前面學習在docker中快速拉取redis並運行使用,今天學習redis的基本操作命令。
- redis是完全開源免費的,遵守BSD協議,是一個高性能的key-value數據庫.
- redis數據類型:string(字符串)、list(鏈表)、hash(哈希)、set集合、 zsort(有序集合)
- redis默認有16個數據庫,從0開始,15結束,可以通過配置文件修改
- redis能讀的速度是110000次/s,寫的速度是81000次/s
一、Redis的數據庫操作
如果存取中文顯示時是亂碼,解決辦法是啓動客戶端時加入 --raw(redis-cli --raw)。
操作命令:
命令 |
參數 |
說明 |
config set requirepass |
123 |
設置登陸密碼爲123 |
config set requirepass |
‘’ |
清空登陸密碼 |
config get requirpass |
|
獲取登陸密碼 |
auth |
123 |
驗證登陸密碼 |
ping |
|
返回pong,連接成功 |
quit |
|
退出客戶端 |
exit |
|
退出客戶端 |
flushdb |
|
清除當前數據庫 |
flushall |
|
清除所有數據庫 |
keys |
* |
模糊查詢key,*任意通配符 |
keys |
? |
模糊查詢key,?通配單個字符 |
keys |
[] |
模糊查詢key,?通配某個字符 |
randomkey |
|
隨機獲取一個key |
exists key |
|
查詢是否存在該key |
type key |
|
查看key的類型 |
rename |
oldkey newkey |
重命名key,如果new key存在,則原值會被覆蓋 |
del |
key1 key2 |
刪除key,1個和多個,返回刪除key的數量 |
move |
key 2 |
將key移動到數據庫2 |
expire |
key 2000 |
設置key的過期時間,單位秒 |
pexpire |
key 2 |
設置key的過期時間,單位毫秒 |
ttl |
key |
查詢key的生命週期,返回秒,不存在的key、已經過期的key返回-2;永久有效的key,返回-1。 |
pttl |
key |
查詢key的生命週期,返回毫秒,不存在的key、已經過期的key返回-2;永久有效的key,返回-1。 |
persist |
key |
將指定的key設置爲永久有效 |
二、數據類型及操作
1、String(字符串):
命令 |
參數 |
說明 |
set |
key value |
創建key和對應的value |
set |
key value ex 60 |
創建key和value,並設置過期時間爲60秒 |
set |
key value px 60 |
創建key和value,並設置過期時間爲60毫秒 |
setex |
key 60 value |
創建key和value,並設置過期時間爲60毫秒 |
set |
key value nx |
key不存在時,創建key和value |
set |
key value xx |
key存在時,創建key和value |
setnx |
key value |
key不存在時,創建key和value(沒有setxx命令) |
get |
key |
獲取key的值 |
mset |
key1 value1 key2 value2 |
同時創建多個鍵值 |
getset |
key value |
賦新的值並獲取當前值 |
setrange |
key 1 value |
使用value覆蓋key的值,從第1個開始 |
getrange |
2 3 |
範圍獲取字符串,開始2,結束3,下標左數從0開始,右數從-1開始 |
incr |
key |
key的值+1,值必須是數字才能加 |
incrby |
key 20 |
將key的值增加20 |
incrbyfloat |
key 2.3 |
將key的值增加2.3(浮點數) |
decr |
key |
key的值-1 |
decrby |
key 10 |
將key的值減10 |
decrbyfloat |
key 2.5 |
將key的值減2.5(浮點數) |
append |
key value |
字符串拼接,在結尾處追加value |
2、list(鏈表):
從左側插入數據:lpush key vaule1 value2
從右側插入數據:rpush key vaule1 value2
只列出左側命令,右側l替換成r即可:
命令 |
參數 |
說明 |
lpush |
key vaule1 value2 |
向鏈表左邊添加多條數據,返回其大小 |
lpushx |
key value |
同上,當key存在時才添加 |
lrange |
key start end |
查看list在[start ,end]之間的數據,取出全部數據:lrange key 0 -1 |
llen |
key |
查看list的大小 |
lpop |
key |
返回並刪除鏈表頭元素 |
rpop |
key |
返回並刪除鏈表尾部元素 |
lindex |
key index |
返回索引爲index的值 |
linsert |
key after或before v1 v2 |
在v1之後或之前添加值爲v2的元素 |
lset |
key index value |
設置index位的值 |
blpop |
key timeout |
阻塞的彈出第一個元素且返回該元素值。在超時時間(秒)內阻塞直到有值 |
brpoplpush |
|
從列表中彈出一個值,將彈出的元素插入到另外一個列表中並返回它; 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素爲止 |
ltrim |
key start end |
只保留在[start,end]區間的數,其餘的刪除,下標 0 表示列表的第一個元素,-1 表示列表的最後一個元素 |
lrem |
key count value |
刪除count個與value相同的值, |
- count > 0 : 從表頭開始向表尾搜索,移除與 value相等的元素,數量爲 count。
- count < 0 : 從表尾開始向表頭搜索,移除與 value相等的元素,數量爲 count的絕對值。
- count = 0 : 移除表中所有與 value相等的值。
3、hash(哈希):
hash是一個string類型的field和value的映射表,hash特別適合用於**存儲對象**。
命令 |
參數 |
說明 |
hset |
user name tom |
創建key爲user ,域爲name 值爲tom的數據 |
hmset |
key f1 v1 f2 v2 |
同時設置多個字段和值 |
hget |
user name |
獲取key爲user,field爲name的值 |
hmget |
key f1 f2…fn |
獲取多個值 |
hsetnx |
key field value |
當鍵不存在時才設置值 |
hgetall |
user |
查看該user下所有的field和value |
hincrby |
user age 2 |
給指定的值設置增量(也可爲負數,即減量) |
hincrbyfloat |
user age 2.3 |
給指定的值設置浮點數增量(也可爲負數,即浮點數減量) |
hkeys |
user |
獲取user的所有的field |
hvals |
user |
獲取user的所有的值 |
hlen |
key |
獲取哈希字段的數量 |
4、set(集合):
集合是無序的字符串集合,集合中的值是唯一的、無序的。
命令 |
參數 |
說明 |
sadd |
key m1 m2 mn |
向一個集合添加多個成員 |
smembers |
key |
返回集合的所有成員 |
sdiff |
key1 key2 keyn |
返回多個集合的差集 |
sunion |
key1 key2 keyn |
返回多個集合的並集 |
sinter |
key1 key2 keyn |
返回多個集合的交集 |
sidffstore |
newset key1 key2 keyn |
將多個集合的差集(交急sinterstore,並集是sunionstore)存儲到另一個集合(這裏是newset) |
sismember |
key member |
判斷值是否是該集合的成員,是返回1,不是返回0 |
smove |
key1 key2 member |
將一個集合的數據移動到另一個集合 |
srandmember |
key count |
隨機返回指定數量的成員 |
scard |
key |
獲取集合的大小 |
srem |
key member1 member2 |
移除一個或多個集合成員 |
spop |
key count |
隨機返回並刪除指定數量的成員 |
5、sort set:
有序集合由唯一的,不重複的字符串元素組成。有序集合中的每個元素都關聯了一個分數(分數值可以是整數值或雙精度浮點數)。可以把有序看成hash和集合的混合體,分數即爲hash的key。有序集合的成員是唯一的,但分數卻可以重複。有序集合中的元素是按序存儲的,不是請求時才排序的。
命令 |
參數 |
說明 |
zadd |
key s1 v1 s2 v2 sn vn |
向有序集合添加多個數據和分數 |
zrange |
key start end [withscores] |
查詢集合在區間[start,end]的數據,withscores顯示分數,默認升序(降序zrevrange) |
zcard |
key |
查看zset的成員數 |
zcount |
key min max |
返回集合的分數在區間[min,max]的成員數+inf表示正無窮,-inf表示負無窮 |
zincrby |
key num value |
對zset對應的value的分數進行增加(增量值爲num) |
zinterstore |
newzset keynums key1 key2 ··· |
取keynums個zset取交集(並集zunionstore)存儲到一個新的有序集合(這裏指newzset) |
zrangebylex |
key min max |
返回指定字典區間的值 |
zrangebyscore |
key min max |
通過分數返回有序集合指定區間內的成員 |
zrank |
key member |
返回指定值的索引 |
zrem |
key member1 member2 |
刪除指定成員 |
zremrangebylex |
key min max |
通過字典區間刪除 |
zremrangebyrank |
start end |
通過索引區間刪除 |
zremrangebyscore |
key min max |
通過分數區間刪除 |
zlexcount |
key min max |
計算有序集合中指定字典區間內成員數量。 |
- 成員名稱前需要加 [ 符號作爲開頭, [ 符號與成員之間不能有空格(除了[ 還有(和數學上的區間一個道理)
- 可以使用 - 和 + 表示得分最小值和最大值