vector用法
download:
實戰專案為主線,整合Redis各種問題場景,不斷改造專案,以問帶學。學完本課後,面對Redis相關問題,你將能夠快速進行排查與修復,無論實際工作還是跳槽面試你都將遊刃有餘。
適合人群
對Redis有興趣,但不懂如何和專案深度結合的後端工程師
瞭解Redis日常操作,但不懂得Redis底層原理的後端工程師
遇到Redis故障完全沒有思路,不知如何解決的後端工程師
技術儲備要求
後端web開發基礎
redis是一個key-value。和Memcached類似,它支援儲存的value型別相對更多,包括string(字串)、list()、set(集合)、zset(sorted set --有序集合)和hash(雜湊型別)。這些都支援push/pop、add/remove及取交集並集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎上,redis支援各種不同方式的排序。與memcached一樣,為了保證效率,資料都是快取在記憶體中。區別的是redis會週期性的把更新的資料寫入磁碟或者把修改操作寫入追加的記錄檔案,並且在此基礎上實現了master-slave(主從)同步。
Redis 是一個高效能的key-value資料庫。 redis的出現,很大程度補償了這類key/value儲存的不足,在部 分場合可以對關係資料庫起到很好的補充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客戶端,使用很方便。 [1]
Redis支援主從同步。資料可以從主伺服器向任意數量的從伺服器上同步,從伺服器可以是關聯其他從伺服器的主伺服器。這使得Redis可執行單層樹複製。存檔可以有意無意的對資料進行寫操作。由於完全實現了釋出/訂閱機制,使得從資料庫在任何地方同步樹時,可訂閱一個頻道並接收主伺服器完整的訊息釋出記錄。同步對讀取操作的可擴充套件性和資料冗餘很有幫助。
redis的官網地址,非常好記,是redis.io。(域名字尾io屬於國家域名,是british Indian Ocean territory,即英屬印度洋領地),Vmware在資助著redis專案的開發和維護。
作者
redis [2] 的作者,叫Salvatore Sanfilippo,來自義大利的西西里島,居住在卡塔尼亞。目前供職於Pivotal公司。他使用的網名是antirez。
效能
下面是官方的bench-mark資料: [1]
測試完成了50個併發執行100000個請求。
設定和獲取的值是一個256位元組字串。
Linux box是執行Linux 2.6,這是X3320 Xeon 2.5 ghz。
文字執行使用loopback介面(127.0.0.1)。
結果:讀的速度是110000次/s,寫的速度是81000次/s 。
支援語言
許多語言都包含Redis支援,包括: [1]
|
|
|
|
|
常用命令
就DB來說,Redis成績已經很驚人了,且不說和之流,就說原版的memcached,速度似乎也只能達到這個級別。Redis根本是使用記憶體,持久化的關鍵是這三條指令:SAVE BGSAVE LASTSAVE …
當接收到SAVE指令的時候,Redis就會dump資料到一個檔案裡面。
值得一說的是它的獨家功能:儲存列表和集合,這是它與mc之流相比更有競爭力的地方。
不介紹mc裡面已經有的內容,只列出特殊的:
TYPE key — 用來獲取某key的型別
KEYS pattern — 匹配所有符合模式的key,比如KEYS * 就列出所有的key了,當然,複雜度O(n)
RANDOMKEY - 返回隨機的一個key
RENAME oldkey— key也可以改名
列表操作,精華
RPUSH key string — 將某個值加入到一個key列表末尾
LPUSH key string — 將某個值加入到一個key列表頭部
LLEN key — 列表長度
LRANGE key start end — 返回列表中某個範圍的值,相當於mysql裡面的查詢那樣
LTRIM key start end — 只保留列表中某個範圍的值
LINDEX key index — 獲取列表中特定索引號的值,要注意是O(n)複雜度
LSET key index value — 設定列表中某個位置的值
LPOP key
RPOP key — 和上面的LPOP一樣,就是類似棧或佇列的那種取頭取尾指令,可以當成來使用了
集合操作
SADD key member — 增加元素
SREM key member — 刪除元素
SCARD key — 返回集合大小
SISMEMBER key member — 判斷某個值是否在集合中
SINTER key1 key2 ... keyN — 獲取多個集合的交集元素
SMEMBERS key — 列出集合的所有元素
還有Multiple DB的命令,可以更換db,資料可以隔離開,預設是存放在DB 0。
資料模型
Redis的外圍由一個鍵、值對映的構成。與其他主要不同在於:Redis中值的型別 [1] 不僅限於,還支援如下抽象資料型別:
-
無序不重複的
-
有序不重複的
-
鍵、值都為的雜湊表 [1]
值的型別決定了值本身支援的操作。Redis支援不同無序、有序的,無序、有序的間的交集、並集等高階伺服器端原子操作。