Redis簡介
- Redis支持數據的持久化,可以將內存中的數據存儲到磁盤中,重啓的時候可以再次加載使用
- Redis不僅支持Key-Value類型的數據,還支持list,set,zset,hash等數據結構的存儲
- Redis支持數據的備份,即master-slave模式的數據備份
Redis優勢
- 性能極高:讀的速度110000次/秒,寫的速度81000次/秒
- 豐富的數據類型:支持二進制案例的String,list,hash,set和Ordered Set數據類型操作
- 原子:Redis的所有操作都是原子性的,同時Redis還支持對幾個操作合併後的原子性執行
- 豐富的特性:支持publish/subscribe,通知key過期等特性
Redis與其他Key-Value存儲的不同:
- Redis有着更爲複雜的數據結構且提供對他們的原子性操作,這是一個不同於其他數據庫的進化路徑。Redis的數據類型都是基於基本數據結構的同時對程序員透明,無需進行額外的抽象。既可以作爲主數據庫(primary database)使用,又可以作爲其他存儲系統的輔助數據庫(auxiliary database)使用
- Redis運行在內存中但是可以持久化到磁盤,所以在對不同數據集進行高速讀寫時需要權衡內存,應爲數據量不能大於硬件內存。在內存數據庫方面的另一個優點是,相比在磁盤上相同複雜的數據結構,在內存中操作起來非常簡單,這樣Redis可以做很多內部複雜性很強的事情。同時,在磁盤格式方面,他們是緊湊的以追加的方式產生的,因爲他們並不需要進行隨機訪問。
- Redis實現主從複製特性:執行復制的從服務器會連接上主服務器,接收主服務器發送的整個數據庫的初始副本;之後主服務器執行的寫命令,都會被髮送給所有連接着的從服務器去執行,從而實時的更新從服務器的數據集。因爲從服務器包含的數據會不斷的進行更新,所以客戶端可以向任一從服務器發送讀請求,以此來避免對主服務器進行集中式的訪問。
五種數據結構
String
(字符串)、List
(列表)、Set
(集合)、Zset
(有序集合)、Hash
(散列)- 對五種數據結構都有效的命令:
type
、rename
、del
String
- set:設置String值,set key value
- get: 獲取key對應的value,get key
- del: 刪除key、value鍵值對
List
- lpush、rpush:左端、右端放入String
- lpop、rpop:左端、右端彈出String
- lindex:用於獲取列表在給定位置上的一個元素
- lrange:用於獲取在給定範圍上的所有元素
Set
- sadd:將元素添加到集合
- srem: 從集合裏面移除元素
- sismember: 快速檢查一個元素是否在集合中
- smembers: 獲取集合包含的所有元素(若元素過多,該命令速度可能會很慢)
- sinter、sunion、sdiff:集合的交集、並集、差集
Hash
- hset:設置散列鍵值對,hset map key value
- hget:獲取散列鍵值對,hget map key
- hgetall:獲取所有的鍵值對
- hdel:刪除指定的鍵值對
Zset
- zadd:帶有指定分值的成員添加到有序集合裏,zadd zset 1.2 member1
- zrange:獲取多個元素,按照分數的大小升序
- zrangescore:獲取給定分值範圍內的所有元素
- zrem:如果給定成員存在於有序集合,移除該元素
Redis官網:https://redis.io/
測試Redis API:https://try.redis.io/