建值對:至關於字典的 key 和 value,支持簡單的增刪改查操做。php
127.0.0.1:6379> ## 單個鍵值對 127.0.0.1:6379> ## 設置 key 爲 name,value 爲 laowen 127.0.0.1:6379> set name laowen OK 127.0.0.1:6379> get name ## 獲取 "laowen" 127.0.0.1:6379> exists name ## 檢查是否存在 (integer) 1 127.0.0.1:6379> del name ## 刪除 (integer) 1 127.0.0.1:6379> get name ## 獲取 (nil) 127.0.0.1:6379> set name1 boy ## 設置 OK 127.0.0.1:6379> set name2 girl ## 設置 OK 127.0.0.1:6379> mget name1 name2 # 放回一個列表 1) "boy" 2) "girl" 127.0.0.1:6379> ## 批量添加多個 127.0.0.1:6379> mset name1 boy name2 girl name3 unknow OK 127.0.0.1:6379> mget name1 name2 name3 1) "boy" 2) "girl" 3) "unknow" 127.0.0.1:6379> ## 設置過時時間 127.0.0.1:6379> set name a OK 127.0.0.1:6379> get name "a" 127.0.0.1:6379> expire name 5 # 5秒後過時 (integer) 1 127.0.0.1:6379> get name # 不到5秒 "a" 127.0.0.1:6379> get name # 5秒以後 (nil) 127.0.0.1:6379> ## 5秒後過時,set + expire 127.0.0.1:6379> setex name 5 aa OK 127.0.0.1:6379> get name "aa" 127.0.0.1:6379> get name (nil) 127.0.0.1:6379> ## 若是不存在就建立,若是存在就建立不成功 127.0.0.1:6379> setnx name a # 若是不存在就建立 (integer) 1 127.0.0.1:6379> get names "a" 127.0.0.1:6379> setnx name b # 若是存在就建立不成功 (integer) 0 127.0.0.1:6379> get name # 沒有改變 "a" 127.0.0.1:6379> ## 計數 127.0.0.1:6379> set age 20 OK 127.0.0.1:6379> get age "20" 127.0.0.1:6379> incr age (integer) 21 127.0.0.1:6379> get age "21" 127.0.0.1:6379> incrby age 5 (integer) 26 127.0.0.1:6379> get age "26"
list 列表,注意它是鏈表而不是數組。vue
Redis的列表結構經常使用於作異步隊列使用。隊列是先進先出的數據結構,經常使用於消息隊列和異步邏輯處理,會確保元素的訪問順序性。java
當列表彈出最後一個元素以後,該數據結構被自動刪除,內存被回收。python
【隊列:右進左出】golang
127.0.0.1:6379> ## 添加一個 books 隊列 127.0.0.1:6379> rpush books php java net golang (integer) 4 127.0.0.1:6379> ## books 隊列尾部繼續添加內容 127.0.0.1:6379> rpush books c (integer) 5 127.0.0.1:6379> ## books 隊列尾部繼續添加內容 127.0.0.1:6379> rpush books python (integer) 6 127.0.0.1:6379> ## books 隊列尾部繼續添加內容 127.0.0.1:6379> rpush books vue (integer) 7 127.0.0.1:6379> ## 獲取 books 隊列的長度 127.0.0.1:6379> llen books (integer) 7 127.0.0.1:6379> ## 彈出 books 隊列的第一個內容 127.0.0.1:6379> lpop books "php" 127.0.0.1:6379> ## 彈出 books 隊列的第一個內容 127.0.0.1:6379> lpop books "java" 127.0.0.1:6379> ## 彈出 books 隊列的第一個內容 127.0.0.1:6379> lpop books "net" 127.0.0.1:6379> ## 彈出 books 隊列的第一個內容 127.0.0.1:6379> lpop books "golang" 127.0.0.1:6379> ## 彈出 books 隊列的第一個內容 127.0.0.1:6379> lpop books "c" 127.0.0.1:6379> ## 彈出 books 隊列的第一個內容 127.0.0.1:6379> lpop books "python" 127.0.0.1:6379> ## 彈出 books 隊列的第一個內容 127.0.0.1:6379> lpop books "vue" 127.0.0.1:6379> ## 彈出 books 隊列的第一個內容 127.0.0.1:6379> lpop books (nil) 127.0.0.1:6379>
【棧:右進右出】redis
127.0.0.1:6379> ## 添加一個 books 棧 127.0.0.1:6379> rpush books php java net golang (integer) 4 127.0.0.1:6379> ## 獲取 books 棧的長度 127.0.0.1:6379> llen books (integer) 4 127.0.0.1:6379> ## 彈出棧尾部的內容 127.0.0.1:6379> rpop books "golang" 127.0.0.1:6379> ## 彈出棧尾部的內容 127.0.0.1:6379> rpop books "net" 127.0.0.1:6379> ## 彈出棧尾部的內容 127.0.0.1:6379> rpop books "java" 127.0.0.1:6379> ## 彈出棧尾部的內容 127.0.0.1:6379> rpop books "php" 127.0.0.1:6379> ## 彈出棧尾部的內容 127.0.0.1:6379> rpop books (nil) 127.0.0.1:6379>
【慢操做】shell
【快速列表】數據庫
hash 哈希字典數組
相似與字典,一個key對應一個value。適用於 key爲標題,value爲內容的存儲。當hash移除最後一個元素以後,該數據結構被自動刪除,內存被回收。緩存
127.0.0.1:6379> ## 設置 name 的哈希、注意 若是字符串中包含空格、須要使用引號 127.0.0.1:6379> hset name wang wangzong (integer) 1 127.0.0.1:6379> hset name wen wenzong (integer) 1 127.0.0.1:6379> hset name zhang zhangzong (integer) 1 127.0.0.1:6379> ## 獲取全部 127.0.0.1:6379> hgetall name 1) "wang" 2) "wangzong" 3) "wen" 4) "wenzong" 5) "zhang" 6) "zhangzong" 127.0.0.1:6379> ## 獲取長度 127.0.0.1:6379> hlen name (integer) 3 127.0.0.1:6379> ## 獲取單個 127.0.0.1:6379> hget name wen "wenzong" 127.0.0.1:6379> ## 更新單個,成功返回0 127.0.0.1:6379> hset name wen wenzongbin (integer) 0 127.0.0.1:6379> hget name wen "wenzongbin" 127.0.0.1:6379> ## 更新單個,成功返回0 127.0.0.1:6379> hset name wen xiaowen (integer) 0 127.0.0.1:6379> hgetall name 1) "wang" 2) "wangzong" 3) "wen" 4) "xiaowen" 5) "zhang" 6) "zhangzong" 127.0.0.1:6379> ## 批量 set 127.0.0.1:6379> hmset name zhao zhaozong li lizong fei feizong OK 127.0.0.1:6379> hgetall name 1) "wang" 2) "wangzong" 3) "wen" 4) "xiaowen" 5) "zhang" 6) "zhangzong" 7) "zhao" 8) "zhaozong" 9) "li" 10) "lizong" 11) "fei" 12) "feizong" 127.0.0.1:6379> hget name wen "xiaowen" 127.0.0.1:6379> ## 刪除單個 127.0.0.1:6379> hdel name wen (integer) 1 127.0.0.1:6379> hget name wen (nil) 127.0.0.1:6379>
set 集合
Redis 的集合內部是鍵值對,是無序的、惟一的。
127.0.0.1:6379> ## 添加一個,不存在,返回1 127.0.0.1:6379> sadd num 100 (integer) 1 127.0.0.1:6379> ## 添加一個,存在, 返回0 127.0.0.1:6379> sadd num 100 (integer) 0 127.0.0.1:6379> ## 添加多個 127.0.0.1:6379> sadd num 99 89 (integer) 2 127.0.0.1:6379> ## 獲取全部 127.0.0.1:6379> ## 和插入的順序是不一致的,由於 set 是無序的 127.0.0.1:6379> smembers num 1) "89" 2) "99" 3) "100" 127.0.0.1:6379> ## 查詢某個值是否存在 存在返回 1 127.0.0.1:6379> sismember num 100 (integer) 1 127.0.0.1:6379> ## 查詢某個值是否存在 不存在返回 0 127.0.0.1:6379> sismember num 90 (integer) 0 127.0.0.1:6379> scard num ## 獲取長度 (integer) 3 127.0.0.1:6379> spop num ## 隨機彈出一個 "100" 127.0.0.1:6379> spop num ## 隨機彈出一個 "89" 127.0.0.1:6379> spop num ## 隨機彈出一個 "99" 127.0.0.1:6379> spop num (nil)
zset 有序列表
127.0.0.1:6379> ## 添加有序列表 zadd key score value 127.0.0.1:6379> ## score:成績 127.0.0.1:6379> ## key:fan 127.0.0.1:6379> ## value:wen 127.0.0.1:6379> zadd fan 100 wen (integer) 1 127.0.0.1:6379> zadd fan 99 zhang (integer) 1 127.0.0.1:6379> zadd fan 101 li (integer) 1 127.0.0.1:6379> zadd fan 98 zhao (integer) 1 127.0.0.1:6379> zadd fan 97 jin (integer) 1 127.0.0.1:6379> ## zrange key 範圍 127.0.0.1:6379> ## 按 score 正序取出;參數爲範圍 127.0.0.1:6379> zrange fan 0 -1 1) "jin" 2) "zhao" 3) "zhang" 4) "wen" 5) "li" 127.0.0.1:6379> ## zrevrange key 範圍 127.0.0.1:6379> ## 按 score 逆序取出;參數爲範圍 127.0.0.1:6379> zrevrange fan 0 -1 1) "li" 2) "wen" 3) "zhang" 4) "zhao" 5) "jin" 127.0.0.1:6379> ## zcard key 獲取總數。至關於 count() 127.0.0.1:6379> zcard fan (integer) 5 127.0.0.1:6379> ## 獲取指定 value 的 score 127.0.0.1:6379> ## zscore key value 127.0.0.1:6379> zscore fan wen "100" 127.0.0.1:6379> ## 獲取指定 value 的 排名 127.0.0.1:6379> ## zrank key value 127.0.0.1:6379> zrank fan wen (integer) 3 127.0.0.1:6379> ## 獲取指定範圍的數據 127.0.0.1:6379> ## zrangebyscore key 範圍 127.0.0.1:6379> zrangebyscore fan 99 100 1) "zhang" 2) "wen" 127.0.0.1:6379> ## 獲取指定範圍的數據 127.0.0.1:6379> ## zrangebyscore key -inf inf 【只有value】 127.0.0.1:6379> ## zrangebyscore key -inf inf withscores 【value 和 score 同時返回】 127.0.0.1:6379> ## -inf/inf 表明 infinite,無窮大的意思,∞大 127.0.0.1:6379> zrangebyscore fan -inf inf 1) "jin" 2) "zhao" 3) "zhang" 4) "wen" 5) "li" 127.0.0.1:6379> zrangebyscore fan -inf inf withscores 1) "jin" 2) "97" 3) "zhao" 4) "98" 5) "zhang" 6) "99" 7) "wen" 8) "100" 9) "li" 10) "101" 127.0.0.1:6379> zrange fan 0 -1 1) "jin" 2) "zhao" 3) "zhang" 4) "wen" 5) "li" 127.0.0.1:6379> ## 刪除 value 127.0.0.1:6379> ## zrem key value 127.0.0.1:6379> zrem fan wen (integer) 1 127.0.0.1:6379> zrange fan 0 -1 1) "jin" 2) "zhao" 3) "zhang" 4) "li" 127.0.0.1:6379>