最近在學習Redis,先看看簡介:git
Redis 是徹底開源免費的,遵照BSD協議(能夠自由的使用,修改源代碼的協議,固然須要知足必定的條件),是一個高性能的key-value數據庫。程序員
特色&&優勢:github
支持數據的持久化,能夠將內存中的數據保存在磁盤內,重啓的時候能夠再次加載進行使用。redis
不只支持key-value類型的數據,同時提供list,set,zset,hash等數據結構的存儲。數據庫
支持數據的備份,即master-slave模式的數據備份。windows
支持豐富的特性,如publish/subscribe,通知,key過時等。數據結構
性能及高,讀110000次/s,寫81000次/s。性能
Redis的全部操做都是原子性的,要麼成功執行,要麼失敗徹底不執行(回滾)。單個操做是原子性的。多個操做也支持事務,即原子性,經過MULTI和EXEC指令包起來。學習
與其餘key-value存儲的不一樣點:spa
數據結構更爲複雜(並提供對他們的原子性操做),其數據類型都是基於基本數據結構的同時對程序員透明,無需進行額外的抽象。
Redis運行在內存中可是能夠持久化到磁盤,因此在對不一樣數據集進行高速讀寫時須要權衡內存,由於數據量不能大於硬件內存。
相比在磁盤上相同的複雜的數據結構,在內存中操做十分簡單,能夠作不少內部複雜性很強的事情。
Redis的安裝
Windows下安裝:
下載地址:https://github.com/MSOpenTech/redis/releases
支持32位和64位,下載壓縮包到本地,解壓,重命名爲Redis;
打開命令行,切換到Redis目錄,運行 redis-server.exe redis.windows.conf;
此時再次打開命令行(第一個命令行不要關,關閉後沒法訪問服務端),切換到Redis目錄下並運行redis-cli.exe -h 127.0.0.1 -p 6379 ;
設置鍵值對 set myKey xxx,取出鍵值對 get myKey。
Linux下安裝:
在終端下載Redis:
$ wget http://download.redis.io/releases/redis-2.8.17.tar.gz
使用檔案名字解壓縮:
$ tar xzf redis-2.8.17.tar.gz
轉到Redis路徑:
$ cd redis-2.8.17
make:
$ make
啓動redis服務:
$ cd src
$ ./redis-server
補充:什麼是原子性,什麼是原子性操做
例:
A想要從本身的賬戶中轉1000塊錢到B的賬戶裏。那個從A開始轉賬,到轉賬結束的這一個過程,稱之爲一個事務。在這個事務裏,要作以下操做:
從A的賬戶中減去1000塊錢。若是A的賬戶原來有3000塊錢,如今就變成2000塊錢了。
在B的賬戶里加1000塊錢。若是B的賬戶若是原來有2000塊錢,如今則變成3000塊錢了。
若是在A的賬戶已經減去了1000塊錢的時候,突然發生了意外,好比停電什麼的,致使轉賬事務意外終止了,而此時B的賬戶裏尚未增長1000塊錢。那麼,咱們稱這個操做失敗了,要進行回滾。回滾就是回到事務開始以前的狀態,也就是回到A的賬戶還沒減1000塊的狀態,B的賬戶的原來的狀態。此時A的賬戶仍然有3000塊,B的賬戶仍然有2000塊。
若是把一個事物看作一個程序,它要麼完整的被執行,要麼徹底不執行,這種特性就叫作原子性。
咱們把這種要麼一塊兒成功(A帳戶成功減小1000,B帳戶成功增長1000),要麼一塊兒失敗(A帳戶回到原來的狀態,B帳戶也回到原來的狀態)的操做叫原子性操做。