Redis快速入門:安裝、配置和操做

本文是有關Redis的系列技術文章之一。在以前的文章中介紹了《Redis快速入門:初識Redis》,對Redis有了一個初步的瞭解。今天繼續爲你們介紹Redis如何安裝、配置和操做。html

  系列文章:mysql

  Redis快速入門:Key-Value存儲系統簡介redis

  Redis快速入門:選擇Key-Value Storesql

        Redis是一個開源的使用ANSI C語言編寫、支持網絡、可基於內存亦可持久化的日誌型、Key-Value數據庫,並提供多種語言的API。從2010年3月15日起,Redis的開發工做由VMware主持。數據庫

  如何安裝Redis?緩存

  Redis的官方下載站是http://redis.io/download,能夠去上面下載最新的安裝程序下來,我寫此文章時的的穩定版本是2.2.12。服務器

如何安裝Redis?

  怎麼安裝 Redis數據庫呢?下面將介紹Linux版本的安裝方法:網絡

  步驟一: 下載Redissession

  下載安裝包:wget http://redis.googlecode.com/files/redis-2.2.12.tar.gz數據結構

  [root@localhost 4setup]# wget http://redis.googlecode.com/files/redis-2.2.12.tar.gz

  
--19:06:56-- http://redis.googlecode.com/files/redis-2.2.12.tar.gz

  正在解析主機 redis.googlecode.com... 
74.125.71.82

  Connecting to redis.googlecode.com
|74.125.71.82|:80... 已鏈接。

  已發出 HTTP 請求,正在等待迴應... 
200 OK

  長度:
455240 (445K) [application/x-gzip]

  Saving to: `redis
-2.2.12.tar.gz'

  
100%[==========================================>455,240 34.8K/in 13s

  
19:07:16 (34.8 KB/s) - `redis-2.2.12.tar.gz' saved [455240/455240]

  [root@localhost 4setup]#

  步驟二: 編譯源程序

  [root@localhost 4setup]# ll

  總計 
29168

  
-rw-r--r-- 1 root root 455240 2011-07-22 redis-2.2.12.tar.gz

  [root@localhost 4setup]# tar xzf redis
-2.2.12.tar.gz

  [root@localhost 4setup]# cd redis
-2.2.12

  [root@localhost redis
-2.2.12]# make

  cd src 
&& make all

  make[
1]: Entering directory `/root/4setup/redis-2.2.12/src'

  步驟三: 啓動Redis服務

  src/redis-server

  [root@localhost redis
-2.2.12]# src/redis-server

  [
624605 Aug 19:17:22 # Warning: no config file specified, using the default config. In order to specify a config file use 'redis-server /path/to/redis.conf'

  [
624605 Aug 19:17:22 * Server started, Redis version 2.2.12

  [
624605 Aug 19:17:22 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.

  [
624605 Aug 19:17:22 * The server is now ready to accept connections on port 6379

  [
624605 Aug 19:17:22 - 0 clients connected (0 slaves), 539544 bytes in use

  Redis 服務端的默認鏈接端口是 6379。

  步驟四: 將Redis做爲 Linux 服務隨機啓動

  vi /etc/rc.local, 使用vi編輯器打開隨機啓動配置文件,並在其中加入下面一行代碼。

  /root/4setup/redis-2.2.12/src/redis-server

 

  步驟五: 客戶端鏈接驗證

  新打開一個Session輸入:src/redis-cli,若是出現下面提示,那麼您就能夠開始Redis之旅了。

  [root@localhost redis-2.2.12]# src/redis-cli

  redis 
127.0.0.1:6379>

  步驟六: 查看Redis日誌

  查看服務器端session,便可對Redis的運行情況進行查看或分析了。

  [624605 Aug 19:24:33 - 0 clients connected (0 slaves), 539544 bytes in use

  [
624605 Aug 19:24:37 - Accepted 127.0.0.1:51381

  [
624605 Aug 19:24:38 - 1 clients connected (0 slaves), 547372 bytes in use

  以上的幾個步驟就OK了!!這樣一個簡單的Redis數據庫就能夠暢通無阻地運行起來了。

  步驟七: 中止Redis實例

  最簡單的方法是在啓動實例的session中,直接使用Control-C來將實例中止。

  咱們還能夠用客戶端來中止服務,如能夠用shutdown來中止Redis實例, 具體以下:

  [root@localhost redis-2.2.12]# src/redis-cli shutdown


  如何配置Redis?

  若是是一個專業的DBA,那麼實例啓動時會加不少的參數以便使系統運行的很是穩定,這樣就可能會在啓動時在Redis後面加一個參數,以指定配置文件的路徑,就象mysql同樣的讀取啓動配置文件的方式來啓動數據庫。源碼編譯完成後,在redis-2.2.12目錄下有一個redis.conf文件,這個文件便是Redis的配置文件,用配置文件來啓動Redis的方法以下:

  [root@localhost redis-2.2.12]# src/redis-server redis.conf

  [
635305 Aug 19:36:45 * Server started, Redis version 2.2.12

  [
635305 Aug 19:36:45 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.

  [
635305 Aug 19:36:45 * The server is now ready to accept connections on port 6379

  [
635305 Aug 19:36:45 - 0 clients connected (0 slaves), 539540 bytes in use

  Redis支持不少的參數,但都有默認值。

  daemonize:

  默認狀況下,redis不是在後臺運行的,若是須要在後臺運行,把該項的值更改成yes。

  pidfile

  當Redis在後臺運行的時候,Redis默認會把pid文件放在/var/run/redis.pid,你能夠配置到其餘地址。當運行多個redis服務時,須要指定不一樣的pid文件和端口。

  bind

  指定Redis只接收來自於該IP地址的請求,若是不進行設置,那麼將處理全部請求,在生產環境中最好設置該項。

  port

  監聽端口,默認爲6379。

  timeout

  設置客戶端鏈接時的超時時間,單位爲秒。當客戶端在這段時間內沒有發出任何指令,那麼關閉該鏈接。

  loglevel

  log等級分爲4級,debug, verbose, notice, 和warning。生產環境下通常開啓notice。

  logfile

  配置log文件地址,默認使用標準輸出,即打印在命令行終端的窗口上。

  databases

  設置數據庫的個數,可使用SELECT 命令來切換數據庫。默認使用的數據庫是0。

  save

  設置Redis進行數據庫鏡像的頻率。

  if(在60秒以內有10000個keys發生變化時){

  進行鏡像備份

  }else if(在300秒以內有10個keys發生了變化){

  進行鏡像備份

  }else if(在900秒以內有1個keys發生了變化){

  進行鏡像備份

  }


  rdbcompression

  在進行鏡像備份時,是否進行壓縮。

  dbfilename

  鏡像備份文件的文件名。

  dir

  數據庫鏡像備份的文件放置的路徑。這裏的路徑跟文件名要分開配置是由於Redis在進行備份時,先會將當前數據庫的狀態寫入到一個臨時文件中,等備份完成時,再把該該臨時文件替換爲上面所指定的文件,而這裏的臨時文件和上面所配置的備份文件都會放在這個指定的路徑當中。

  slaveof

  設置該數據庫爲其餘數據庫的從數據庫。

  masterauth

  當主數據庫鏈接須要密碼驗證時,在這裏指定。

  requirepass

  設置客戶端鏈接後進行任何其餘指定前須要使用的密碼。警告:由於redis速度至關快,因此在一臺比較好的服務器下,一個外部的用戶能夠在一秒鐘進行150K次的密碼嘗試,這意味着你須要指定很是很是強大的密碼來防止暴力破解。

  maxclients

  限制同時鏈接的客戶數量。當鏈接數超過這個值時,redis將再也不接收其餘鏈接請求,客戶端嘗試鏈接時將收到error信息。

  maxmemory

  設置redis可以使用的最大內存。當內存滿了的時候,若是還接收到set命令,redis將先嚐試剔除設置過expire信息的key,而無論該key的過時時間尚未到達。在刪除時,將按照過時時間進行刪除,最先將要被過時的key將最早被刪除。若是帶有expire信息的key都刪光了,那麼將返回錯誤。這樣,redis將再也不接收寫請求,只接收get請求。maxmemory的設置比較適合於把redis看成於相似memcached的緩存來使用。

  appendonly

  默認狀況下,redis會在後臺異步的把數據庫鏡像備份到磁盤,可是該備份是很是耗時的,並且備份也不能很頻繁,若是發生諸如拉閘限電、拔插頭等情況,那麼將形成比較大範圍的數據丟失。因此redis提供了另一種更加高效的數據庫備份及災難恢復方式。開啓append only模式以後,redis會把所接收到的每一次寫操做請求都追加到appendonly.aof文件中,當redis從新啓動時,會從該文件恢復出以前的狀態。可是這樣會形成appendonly.aof文件過大,因此redis還支持了BGREWRITEAOF指令,對appendonly.aof進行從新整理。因此我認爲推薦生產環境下的作法爲關閉鏡像,開啓appendonly.aof,同時能夠選擇在訪問較少的時間天天對appendonly.aof進行重寫一次。

  appendfsync

  設置對appendonly.aof文件進行同步的頻率。always表示每次有寫操做都進行同步,everysec表示對寫操做進行累積,每秒同步一次。這個須要根據實際業務場景進行配置。

  vm-enabled

  是否開啓虛擬內存支持。由於redis是一個內存數據庫,並且當內存滿的時候,沒法接收新的寫請求,因此在redis 2.0中,提供了虛擬內存的支持。可是須要注意的是,redis中,全部的key都會放在內存中,在內存不夠時,只會把value值放入交換區。這樣保證了雖然使用虛擬內存,但性能基本不受影響,同時,你須要注意的是你要把vm-max-memory設置到足夠來放下你的全部的key。

  vm-swap-file

  設置虛擬內存的交換文件路徑。

  vm-max-memory

  這裏設置開啓虛擬內存以後,redis將使用的最大物理內存的大小。默認爲0,redis將把他全部的能放到交換文件的都放到交換文件中,以儘可能少的使用物理內存。在生產環境下,須要根據實際狀況設置該值,最好不要使用默認的0。

  vm-page-size

  設置虛擬內存的頁大小,若是你的value值比較大,好比說你要在value中放置博客、新聞之類的全部文章內容,就設大一點,若是要放置的都是很小的內容,那就設小一點。

  vm-pages

  設置交換文件的總的page數量,須要注意的是,page table信息會放在物理內存中,每8個page就會佔據RAM中的1個byte。總的虛擬內存大小 = vm-page-size * vm-pages。

  vm-max-threads

  設置VM IO同時使用的線程數量。由於在進行內存交換時,對數據有編碼和解碼的過程,因此儘管IO設備在硬件上本上不能支持不少的併發讀寫,可是仍是若是你所保存的vlaue值比較大,將該值設大一些,仍是可以提高性能的。

  glueoutputbuf

  把小的輸出緩存放在一塊兒,以便可以在一個TCP packet中爲客戶端發送多個響應,具體原理和真實效果我不是很清楚。因此根據註釋,你不是很肯定的時候就設置成yes。

  hash-max-zipmap-entries

  在redis 2.0中引入了hash數據結構。當hash中包含超過指定元素個數而且最大的元素沒有超過臨界時,hash將以一種特殊的編碼方式(大大減小內存使用)來存儲,這裏能夠設置這兩個臨界值。

  activerehashing

  開啓以後,redis將在每100毫秒時使用1毫秒的CPU時間來對redis的hash表進行從新hash,能夠下降內存的使用。當你的使用場景中,有很是嚴格的實時性須要,不可以接受Redis時不時的對請求有2毫秒的延遲的話,把這項配置爲no。若是沒有這麼嚴格的實時性要求,能夠設置爲yes,以便可以儘量快的釋放內存。


  操做Redis數據庫

  下面咱們來簡單的操做一下數據庫。

  一、插入數據

  redis 127.0.0.1:6379> set name wwl

  OK

  設置一個key-value對。

  二、查詢數據

  redis 127.0.0.1:6379> get name

  
"wwl"

  取出key所對應的value。

  三、刪除鍵值

  redis 127.0.0.1:6379> del name

  刪除這個key及對應的value。

  四、驗證鍵是否存在

  redis 127.0.0.1:6379> exists name

  (
integer0

  其中0,表明此key不存在;1表明存在。

相關文章
相關標籤/搜索