1,首先介紹一下Redis
Redis 是徹底開源免費的,遵照BSD協議,是一個高性能的key-value數據庫。數據庫
REmote DIctionary Server(Redis) 是一個由Salvatore Sanfilippo寫的key-value存儲系統。緩存
Redis是一個開源的使用ANSI C語言編寫、遵照BSD協議、支持網絡、可基於內存亦可持久化的日誌型、Key-Value數據庫,並提供多種語言的API。服務器
它一般被稱爲數據結構服務器,由於值(value)能夠是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等類型。網絡
2,Redis 與其餘 key - value 緩存產品有如下三個特色
- Redis支持數據的持久化,能夠將內存中的數據保存在磁盤中,重啓的時候能夠再次加載進行使用。
- Redis不只僅支持簡單的key-value類型的數據,同時還提供list,set,zset,hash等數據結構的存儲。
- Redis支持數據的備份,即master-slave模式的數據備份。
3,Redis 優點
- 性能極高 – Redis能讀的速度是110000次/s,寫的速度是81000次/s 。
- 豐富的數據類型 – Redis支持二進制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 數據類型操做。
- 原子 – Redis的全部操做都是原子性的,意思就是要麼成功執行要麼失敗徹底不執行。單個操做是原子性的。多個操做也支持事務,即原子性,經過MULTI和EXEC指令包起來。
- 豐富的特性 – Redis還支持 publish/subscribe, 通知, key 過時等等特性。
補充:
-
什麼是 BSD 協議?數據結構
BSD開源協議是一個給於使用者很大自由的協議。能夠自由的使用,修改源代碼,也能夠將修改後的代碼做爲開源或者專有軟件再發布。當你發佈使用了BSD協議的代碼,或者以BSD協議代碼爲基礎作二次開發本身的產品時,須要知足三個條件:性能
- 若是再發布的產品中包含源代碼,則在源代碼中必須帶有原來代碼中的BSD協議。
- 若是再發布的只是二進制類庫/軟件,則須要在類庫/軟件的文檔和版權聲明中包含原來代碼中的BSD協議。
- 不能夠用開源代碼的做者/機構名字和原來產品的名字作市場推廣。
BSD代碼鼓勵代碼共享,但須要尊重代碼做者的著做權。BSD因爲容許使用者修改和從新發布代碼,也容許使用或在BSD代碼上開發商業軟件發佈和銷 售,所以是對商業集成很友好的協議。spa
不少的公司企業在選用開源產品的時候都首選BSD協議,由於能夠徹底控制這些第三方的代碼,在必要的時候能夠修改或者 二次開發。日誌
-
什麼是原子性,什麼是原子性操做?
舉個例子:事務
A想要從本身的賬戶中轉1000塊錢到B的賬戶裏。那個從A開始轉賬,到轉賬結束的這一個過程,稱之爲一個事務。在這個事務裏,要作以下操做:ip
- 1. 從A的賬戶中減去1000塊錢。若是A的賬戶原來有3000塊錢,如今就變成2000塊錢了。
- 2. 在B的賬戶里加1000塊錢。若是B的賬戶若是原來有2000塊錢,如今則變成3000塊錢了。
若是在A的賬戶已經減去了1000塊錢的時候,突然發生了意外,好比停電什麼的,致使轉賬事務意外終止了,而此時B的賬戶裏尚未增長1000塊錢。那麼,咱們稱這個操做失敗了,要進行回滾。回滾就是回到事務開始以前的狀態,也就是回到A的賬戶還沒減1000塊的狀態,B的賬戶的原來的狀態。此時A的賬戶仍然有3000塊,B的賬戶仍然有2000塊。
咱們把這種要麼一塊兒成功(A賬戶成功減小1000,同時B賬戶成功增長1000),要麼一塊兒失敗(A賬戶回到原來狀態,B賬戶也回到原來狀態)的操做叫原子性操做。
若是把一個事務可看做是一個程序,它要麼完整的被執行,要麼徹底不執行。這種特性就叫原子性。