Redis實戰解讀
一.初識Redis
1.什麼是Redis
Redis是一個速度非常快的非關係型資料庫(non-relational database),它可以儲存鍵(key)與五種不同型別的值的對映(mapping),可以將儲存在記憶體的鍵值對資料持久化到磁碟,可以使用複製特性來擴充套件讀效能,也可以採用客戶端分片來擴充套件寫效能。--《Redis實戰》
2.Redis與其他資料庫的對比
與memcached對比:Redis能夠儲存包括字串型別的共計五種資料型別的鍵值,而memcached只能儲存普通的字串型別的鍵值。
二.Redis中的資料結構
Redis支援String(字串),List(列表),Set(集合),Hash(雜湊),Zset(有序集合)共計五種資料型別以儲存鍵值,接下來,我們將分別去討論這五種資料型別
(我們將在Linux系統進行演示,如何在Linux系統上安裝並執行Redis,請參照https://redis.io/docs/getting-started/installation/install-redis-on-linux/)
1.String(字串)
字串的內容可以是字串,整數或者是浮點數,因此,字串可以進行字串相關的操作,以及數值型的自加自減操作。
相當於其他資料型別而言,字串型別的內容較為簡單,這裡以程式碼過之。
相關方法說明:
向資料庫中新增一個key-value: set key value
獲取資料庫中指定key的value: get key
刪除資料庫中指定的key: del key
2.List(列表)
Redis中的連結串列結構能夠順序儲存多個字串,其中,連結串列中的每一個節點均代表著一個字串
程式碼演示:
相關方法說明:
rpush key value:從左側向key對應的連結串列插入一個value元素,並返回新增的元素的value值
lpush key value:從右側向key對應的連結串列插入一個value元素,並返回新增的元素的value值
rpop key:從左側刪除key對應的連結串列的一個元素,並返回刪除的元素的value值
lpop key:從右側刪除key對應的連結串列的一個元素,並返回刪除的元素的value值
lindex key index :獲取列表上指定(從右側數)index處的元素的value值
lrange key startIndex endIndex:獲取從startIndex索引到endIndex索引之間(即[startIndex,endIndex]區間上的元素)的元素的元素值
注意:當startIndex = 0,endIndex = -1,則表示獲取整個連結串列內的所有元素。
index是從0開始計數。
3.Set(集合)
與List資料型別不同的是,Set不能儲存多個相同的字串值,也就是說,其儲存的元素值具有唯一性,此外,其儲存順序也是不定的,即元素儲存的順序與插入順序沒有關係。
相關方法說明:
sadd key value : 向指定key的集合中新增一個值為value的元素,成功返回1,失敗返回0
srem key value : 向指定key的集合中刪除一個值為value的元素,成功返回1,失敗返回0
smembers key : 獲取指定key的集合中的全部元素
sismember key value :確定指定元素value是否存在於key的集合中,存在則返回1,不存在則返回0
4.Hash(雜湊)
Redis中的雜湊用於儲存多個鍵值對之間的對映,類似於Java中的Map資料型別。
相關方法說明:
hset key sub_key sub_value : 向指定key的集合中新增 sub_key 與sub_value的鍵值對映,插入成功返回1,失敗返回0
hget key sub_key : 獲取指定key的集合中的sub_key對應的值,存在sub_key的關係對映,則返回相對應的值,不存在返回nil
hdel key sub_key : 刪除指定key的集合中的sub_key的鍵值對映
hgetall key : 獲取指定key集合中的全部鍵值對映,注意:結果是以key1,value1,key2,value2,.......交替展示
5.Zset(有序集合)
與Set一樣,該種資料型別也是用於儲存唯一性的鍵值的,與前者不同的是,後者在鍵值的基礎上還新增了一個與之繫結的分數值(score),因此你可以依據score值去獲取相應的value值,並且也可以查詢指定score範圍內的相對應的key值。
相關方法說明:
zadd key score item : 向指定key的有序集合中新增一個分數為score 的item元素,插入成功返回1,失敗返回0
zrem key item : 刪除指定key的有序集合中的指定item元素,刪除成功返回1,失敗返回0
zrange key startIndex endIndex [withscores] : 獲取指定key的有序集合中的索引介於起始索引startIndex與結束索引endIndex之間的元素,新增withscores則返回的結果中為item與score的交替展示
zrangebyscore key minScore maxScore [withscores]: 獲取指定key的有序集合中的分數值介於minScore與maxScore之間的元素值,新增withscores則返回的結果中為item與score的交替展示