作者:不一定會持續更新。
Table of Contents
<span class="ez-toc-title-toggle"><a href="#" class="ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle" aria-label="顯示/隱藏內容目錄"><span class="ez-toc-js-icon-con"><span class=""><span class="eztoc-hide" style="display:none;">Toggle</span><span class="ez-toc-icon-toggle-span"><svg style="fill: #999;color:#999" xmlns="http://www.w3.org/2000/svg" class="list-377408" width="20px" height="20px" viewBox="0 0 24 24" fill="none"><path d="M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z" fill="currentColor"></path></svg><svg style="fill: #999;color:#999" class="arrow-unsorted-368013" xmlns="http://www.w3.org/2000/svg" width="10px" height="10px" viewBox="0 0 24 24" version="1.2" baseProfile="tiny"><path d="M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z"/></svg></span></span></span></a></span>
Key命令
格式:
keys pattern
範例:
keys * # 查所有key,常用
keys 'k*' # 查名稱包含[開頭為k]的key

檢查Key是否存在
格式(可多個): 存在返回1,不存在返回0
exists key1
範例:
exists k0
exists k1
exists k0 k1
exists k0 k1 k2 k3

查看Key對應的value的類型(Type)
格式:
type key
redis⽀持的五種類型:
- string
- list
- set
- zset
- hash

刪除Key
格式:
del key1
del key1 key2 key3 # 刪除多個

設置Key過期時間
如果在一開始就沒有指定過期時間,Key會一直存在,直到用Del才會移除,
在已有的Key設置過期時間(以秒為單位):
expire key seconds
查看Key的有效時間:
格式:
ttl key

String字符串
字符串類型是Redis中最為基礎的數據存儲類型,它在Redis中是二進制安全的,這便意味著該類型可以接受任何格式的數據,如JPEG圖像數據或Json對象描述信息等。在Redis中字符串類型的Value最多可以容納的數據長度是512M。
想了解更多命令可參考:String
Set、Setnx 設置key與value & 設置多個
- 如果設置的key不存在則添加,若key已存在則修改value。
格式:
set key value # 設置一個
mset key1 value1 key2 value2 key2 value2 # 設置多個
設置一個key與value:
set name hello

setnx name hello

mset k1 hello k2 hi k3 good

設置過期時間
格式:
setex key seconds value # 以秒為單位
範例:
setex ice 5 cream # 設置5秒後過期
get ice # cream
get ice # 5秒後在獲取會回nil

格式:
append key value
原本k3的value是good,我在k3的value追加值:
append k3 morning

但若是原本沒有key的話,會設置一個新的key與value

獲取value & 多個valeu
格式:
get key
mget key1 key2 key3 # 獲取多個值
範例:
mget k1 k2 k3

List列表
列表的元素類型為有序列的字符串
想了解更多命令可參考:List
增加
lpush key value1 value2 value3 ....valueN # 左側
rpush key value1 value2 value3 ....valueN # 右側
下圖為從左/右側加入數據的範例:
lpush Llist A B C D E
rpush Rlist R O P W Z
lrange Llist 0 5
lrange Rlist 0 5

lpush的第一個元素(0)是E,因為lpush插入的方式是像下方影片的插入方式,
所以原本第一個A才會在最後。(右側則不舉例)

- 指定位置添加數據
可指定要在某一元素的前或後插入新的元素
格式:
linsert key before/after 現有元素 插入的新元素
範例:
lrange Llist 0 -1 # 顯示Llist的所有元素
linsert Llist before B b1 # 在現有元素B的前方插入新元素b1

修改指定位置的value
- 索引可以是負數
- 最左側為第一個元素0
- 最後一個元素是-1
格式:
lset key index value
範例:
lrange Llist 0 -1
lset Llist 1 Z
這裡要注意的是,第一個元素是0,所以把原本的元素1:D改成了Z

獲取value
- 索引可以是負數
- 最左側為第一個元素0
- 最後一個元素是-1
格式:
lrange key start stop
常用的顯示所有元素方式為:lrange key 0 -1
刪除某個/多個元素
格式:
lrem key count value
移除元素可以是一個或多個,都是照count來決定移除的數量和方向。
- count > 0 : 從元素0開始,移除count個與value相同的元素
- count < 0 : 從最後一個元素,移除count個與value相同的元素
- count = 0 : 移除表中與value相同的元素
範例:
rpush lrem_test aa bb cc oo aa zz bb aa rr aa # 先建立一個list
lrange lrem_test 0 -1 # 檢視一下新創立的list
lrem lrem_test 2 aa # 刪除2個與aa相同的元素 (下方圖一)
lrem lrem_test -1 aa # 移除表中後面數的第1個與aa相同的元素 (下方圖二)
lrem lrem_test 0 bb # 移除表中與bb相同的元素 (下方圖三)
(下方為圖一)

(下方為圖二)

(下方為圖三)

想了解更多命令可參考:lrem
Set集合
- ⽆序集合
- 元素為字符串類型
- 元素具有唯唯性,不重複
- Set集合沒有修改操作
想了解更多命令可參考:Set集合
增加
添加元素格式:
sadd key member1 member2 ...
範例:
sadd aset Abby Kitty Bobby
獲取
獲取所有元素格式:
smembers key
下圖顯示結果,很像list的

刪除
删除指定元素格式:
srem key value
list刪除方式是lrem,集合的刪除方式是srem,只要看頭是l或s就能知道是什麼數據,
集合的值不能重複,所以不需指定index。
zset有序集合
可以當作是Set的升級版,在基礎上加了”權重”。
- 有序的集合
- 元素為字符串類型
- 元素具有唯一性,不可重複
- score表示權重,可以是整數或浮點數,通過權重將從⼩到大元素排序
- 與集合一樣,沒有修改操作
增加
格式如下:
zadd key score1 member1 score2 member2 ...
範例:
zadd zset_test 4 Abby 5 Kitty 6 Lucy 1 Bocky 4 Pocky 1 Happy
獲取member與score
與List獲取元素很相似,zset是有序集合,但不需設數量,因為集合不能有重複的元素。
- 需指定開始與結束位置
- 索引由左至右,索引可以是負數
- 第一個元素為0,-1表示最后⼀个元素
格式:
zrange key start stop
範例:
zrange zset_test 0 -1

格式:
zrangebyscore key min max
範例:
zrangebyscore zset_test 1 2

格式:
zscore key member
範例為:獲取Bocky、Happy(member)的score

刪除
格式:
zrem key member1 member2 ....
範例:
zrem zset_test Pocky

格式:
zremrangebyscore key min max
範例:
zremrangebyscore zset_test 1 2 # 刪除集合zset_test中權重值是1~2之間的元素
範例的Bocky、Happy的score值為1。

hash
- 用於存儲對象,對象的結構為屬性(field)與值(value)
- 值的類型為字符串
(滿像python的dict)
增加
hset: 如果給定的Key不存在則建立,若存在則覆蓋,成功返回1
hsetnx: 如果給定的key已經存在,則不執行該命令,返回0
格式:
hset key field value
範例:
hset today very happy
- 設置多個屬性
如果有一樣field的名稱但不同的value,則會覆蓋掉。
格式:
hmset key field1 value1 field2 value2 ...
範例:
hmset yesterday very happy sometimes read often playgames

獲取field與value
格式:
hkeys key
範例:
hkeys yesterday

格式:
hvals key

格式:
hget key field # 獲取一個value
hmget key field1 field2 field3 ... # 獲取多value
範例:
hget yesterday very
hmget yesterday very sometimes often

刪除属性
- 刪除整個hash則使用del(與string一樣)
- 刪除field(屬性)時,value(值)也會一併刪除
格式:
hdel key field1 field2 ...
注意:
del是刪除key,hdel才是刪除屬性
