NoSQL資料庫之Redis資料庫:Redis的介紹與安裝部署,nosqlredis
NoSQL(NoSQL = Not Only SQL),它指的是非關係型的資料庫。隨著互連網web2.0網站的興起,傳統的關聯式資料庫在應付web2.0網站,特別是超大規模和高並發的SNS類型的web2.0純動態網站已經顯的力不從心,暴露了很多難以克服的問題,而非關係型的資料庫則由於其本身的特點得到了非常迅速的發展。
NoSQL的特點:
特點一:
是以key-value形式儲存,和傳統的關係型資料庫不一樣,不一定遵循傳統資料庫的一些基本要求,比如說遵循SQL標準、ACID屬性、表結構等等,這類資料庫主要有以下特點:非關係型的、分布式的、開源的、水平可擴充的。
特點二:
處理超大量的資料比Mysql等有優勢。
運行在便宜的PC伺服器叢集上。
擊碎了效能瓶頸。(MySQL的時候需要很多最佳化,但是NoSQL不需要,效能非常高)
特點三(效能方面):
對資料高並發讀寫。(對MySQL進行上萬次讀的請求可能頂得住,但是如果對MySQL進行上萬次的寫的時候,硬碟IO要求就比較高,效率就比較低下,但是NoSQL就比較方面。)
對海量資料的高效率儲存和訪問。
對資料的高可擴充和高可用性。(NoSQL可以增加一個伺服器節點,使用NoSQL來做分布式比較簡單,因為沒有固定的表結構,所以更改比較方便)。
Redis的介紹:
Redis是一個開源的,先進的key-value儲存。它通常被稱為資料結構伺服器,因為鍵可以包含字串,雜湊,鏈表,集合和有序集合。
Redis是一個key-value儲存系統。它支援儲存的value類型很多,包括string(字串)、list(鏈表)、set(集合)、zset(有序集合)。這些資料類型都支援push/pop、add/remove及取交集和並集及更豐富的操作,Redis支援各種不同方式的序列。為了保證效率,都是緩衝在記憶體中的,它也可以周期性的吧更新的資料寫入磁碟或者吧修改操作寫入追加的記錄檔案。
Redis的使用場合:
在新浪微博Redis的部署情境很多,大概分為如下2種:
應用程式直接存取Redis資料庫。
應用程式直接存取Redis,只有當Redis訪問失敗時才訪問MySQL
把大象裝冰箱的過程:
Redis資料庫提供多中靈活的資料結構和資料操作,為不同的大象構建不同的冰箱。
Redis具體的適用情境:
取最新N個資料庫的操作
熱門排行榜應用,取TOP N操作
需要精確設定到期時間的應用
計數器應用
Uniq操作,擷取某段時間所有資料排重值
即時系統,反垃圾系統。
Pub/Sub構建即時訊息系統(Redis專屬的發布和訂閱系統)
構建隊列系統
緩衝。
Redis的安裝與部署
第一步:
Redis的官方下載站是:http://redis.io/download
最好使用Stable版本(穩定版本)。
第二步:編譯來源程式
tar zxvf redis-2.8.19.tar.gz
cd redis-2.8.19
make
cd src && make install (注意許可權問題)
網上安裝方式: |
$ wget http://download.redis.io/releases/redis-2.8.19.tar.gz $ tar xzf redis-2.8.19.tar.gz $ cd redis-2.8.19 $ make |
步驟三:
移動檔案,便於管理:
mkdir –p /usr/local/redis/bin
mkdir –p /usr/local/redis/etc
mv /home/toto/redis/redis-2.8.19/redis.conf/usr/local/redis/etc/
cd src
mv mkreleasehdr.sh redis-benchmarkredis-check-aof redis-check-dump redis-cli redis-server /usr/local/redis/bin/ (也就是說移動的是所有的可執行檔檔案)
第四步:啟動Redis服務:
/usr/local/redis/bin/redis-server (或者到/usr/local/redis/bin目錄下,執行:./redis-server)
可以指定設定檔:
/usr/local/redis/etc/redis.conf (可以在./redis-server後面加上這個設定檔)
Redis服務端的預設串連連接埠是6379 (mongodb的連接埠號碼是:27017和28017連接埠)
第五步:
用戶端串連:/usr/local/redis/bin/redis-cli (cli是client的縮寫)。
退出用戶端的方式是通過exit或者通過quit的方式。
步驟六:
停止Redis執行個體
我們可以使用/usr/local/redis/bin/redis-cli然後再
shutdown
也可以使用pkill redis-server 或者kill -9來實現。
Redis的配置:
daemonize:如果需要在後台運行,把該項改為yes |
pidfile:配置多個pid的地址預設在/var/run/redis.pid |
bind:綁定ip,設定後只接受來自該ip的請求 |
port:監聽連接埠,預設為6379 |
timeout:設定用戶端串連時的逾時時間,單位為秒 |
loglevel:分為4級,debug、verbose、notice、warning |
logfile:配置log檔案地址 |
databases:設定資料庫的個數,預設使用的資料庫為0 |
save:設定redis進行資料庫鏡像的頻率。(備份資料) |
rdbcompression:在進行鏡像備份時,是否進行壓縮 |
dbfilename:鏡像備份檔案的檔案名稱 |
dir:資料庫鏡像備份的檔案放置路徑 |
slaveof:設定資料庫為其它資料庫的從資料庫。 |
masterauth:主要資料庫串連需要的密碼驗證。 |
requirepass:設定登入時需要使用的密碼。 |
maxclients:限制同時串連的客戶數量。 |
maxmemory:設定redis能夠使用的最大記憶體。 |
appendonly:開啟append only模式。 |
appendfsync:設定對appendonly.aof檔案進行同步的頻率。 |
vm-enabled:是否開啟虛擬記憶體支援。 |
vm-swap-file:設定虛擬記憶體的分頁檔路徑。 |
vm-max-memory:設定redis使用的最大實體記憶體大小。 |
vm-page-size:設定虛擬記憶體的頁的大小 |
vm-pages:設定分頁檔的總的page數量 |
vm-max-threads設定VMIO同時使用的線程數量。 |
glueoutputbuf:把小的輸出緩衝存放在一起。 |
hash-max-zipmap-entries:設定hash的臨界值 |
activerehashing:重新hash |
查看進程的方式:ps –ef | grep “redis”
查看連接埠的方式:netstat -tunpl | grep 6379