最近在學習Redis,先看看簡介: Redis 是完全開源免費的,遵守BSD協議(可以自由的使用,修改源代碼的協議,當然需要滿足一定的條件),是一個高性能的key-value資料庫。 特點&&優點: 支持數據的持久化,可以將記憶體中的數據保存在磁碟內,重啟的時候可以再次載入進行使用。 不僅支持key- ...
最近在學習Redis,先看看簡介:
Redis 是完全開源免費的,遵守BSD協議(可以自由的使用,修改源代碼的協議,當然需要滿足一定的條件),是一個高性能的key-value資料庫。
特點&&優點:
支持數據的持久化,可以將記憶體中的數據保存在磁碟內,重啟的時候可以再次載入進行使用。
不僅支持key-value類型的數據,同時提供list,set,zset,hash等數據結構的存儲。
支持數據的備份,即master-slave模式的數據備份。
支持豐富的特性,如publish/subscribe,通知,key過期等。
性能及高,讀110000次/s,寫81000次/s。
Redis的所有操作都是原子性的,要麼成功執行,要麼失敗完全不執行(回滾)。單個操作是原子性的。多個操作也支持事務,即原子性,通過MULTI和EXEC指令包起來。
與其他key-value存儲的不同點:
數據結構更為複雜(並提供對他們的原子性操作),其數據類型都是基於基本數據結構的同時對程式員透明,無需進行額外的抽象。
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賬戶也回到原來的狀態)的操作叫原子性操作。