作者:不一定會持續更新。
Key命令
- 在查找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
- 如果設置的key存在則不做任何動作。
setnx name hello
- 設置多個key與value:
mset k1 hello k2 hi k3 good
設置過期時間
- 為key設定value值,並且設定過期時間
格式:
setex key seconds value # 以秒為單位
範例:
setex ice 5 cream # 設置5秒後過期
get ice # cream
get ice # 5秒後在獲取會回nil
- 在key的value內追加值
格式:
append key value
原本k3的value是good,我在k3的value追加值:
append k3 morning
但若是原本沒有key的話,會設置一個新的key與value
獲取value & 多個valeu
- get:根據鍵獲取值,如果不存在此鍵則返回nil
格式:
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
- 獲取score在min與max之間的值
格式:
zrangebyscore key min max
範例:
zrangebyscore zset_test 1 2
- 獲取member的score值
格式:
zscore key member
範例為:獲取Bocky、Happy(member)的score
刪除
- 删除指定的member
格式:
zrem key member1 member2 ....
範例:
zrem zset_test Pocky
- 删除有score值指定範圍的member
格式:
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
- 獲取所有field(属性)
格式:
hkeys key
範例:
hkeys yesterday
- 獲取key裡面所有的value
格式:
hvals key
- 獲取field的value
格式:
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才是刪除屬性