一.初識Redis 1.什麼是Redis Redis是一個速度非常快的非關係型資料庫(non-relational database),它可以存儲鍵(key)與五種不同類型的值的映射(mapping),可以將存儲在記憶體的鍵值對數據持久化到磁碟,可以使用複製特性來擴展讀性能,也可以採用客戶端分片來... ...
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的交替展示