redis:高性能key-value數據庫,安裝及主從配置

1、官方性能介紹:set達到11萬次/S,get達到8.1萬次/S。當數據庫中的數據達到G級時,寫入速度下降明顯 。

2、官網:http://redis.io/  中國區網站(非常好,完美翻譯了官方的文檔):http://www.redis.cn/topics/cluster-spec.html
3、特別知識(非常重要):
     1)、redis是但單線程模式,使用大緩存快速CPU,而不是多核,推薦intel CPU,AMD的CPU性能只有intel CPU 的一半。
     2)、VM虛擬機上運行redis比在物理機器上慢一倍。

 

安裝包下載地址:下載

 
3、安裝:
     #tar -zxvf redis-2.8.19.tar.gz
     #cd redis-2.8.19
     #make
     #make install
     注意事項:1)運行redis前,在/etc/sysctl.conf中添加vm.overcommit_memory=1,否則會出現警告。
                     2)如果內存緊張,需要設定內容參數 echo 1 >/proc/sys/vm/overcommit_memory
                        意思如下:0代表內核將檢查是否有足夠內存給應用進程使用,如果有則內存申請通過,否則內存申請失敗,並將錯誤信息報告給應用。
                                        1表示內核允許分配所有的物理內存,而不管當前內存狀態如何。
                                        2表示內核允許分配超過所有物理內存和交換空間總和的內存。
                     3)echo never > /sys/kernel/mm/transparent_hugepage/enabled
 
4、redis的相關命令在src目錄下.
    啓動redis  cd/src 執行 ./redis-server
 
5、redis主從複製,如下是需要在生產環境上修改的,其他參數可以不看: vi redis.conf
     說明:redis主從模式:1、鏈式主從(一主多從):Master-slaver-slaver-salver,但如果第一個slave出現宕機重啓,首先從master 接收 數據恢復腳本,
                                                         這個是阻塞的,如果主庫數據幾TB的情況恢復過程得花上一段時間,在這個過程中其他的slave就無法和主庫同步了
                                      2、網狀主從(多主多從):Master-salver-slaver(Master-slaver-slaver)-slaver,比如A是B的Master,但B又是C的Master。。。
     
 
    1)、redis Master配置,不能直接拷貝過去覆蓋,最好逐個查看修改
     #redis運行在後臺,需要修改爲yes,默認爲no
     daemonize yes
     #請自行修改
     port 6379
     #redis只接受來自該ip的請求,如果不設置,則接受所有請求,可以有多個空格分割如:192.168.62.155 192.168.62.153
     bind 192.168.62.155
     #客戶端連接超時時間,單位秒,若客戶端在這段時間沒有發出任何指定,連接關閉,默認爲0
      timeout 300
      logfile "./log/redis.log"
      #最大內存設置,如果redis使用超過此內存,redis首先會刪除設置了expire的key,且不管是否真實過期,如果刪除完了還是內存不夠,則僅支持讀。
      maxmemory 5gb
      #最大內存清理策略,如果超過內存,則採用lru算法刪除key
      maxmemory-policy volatile-lru
      maxmemory-samples 3
      #appendfsync no
      #Mater主密碼,從需要配置密碼才能連接
      requirepass hezhixiong
      #默認有16個庫,通過客戶端命令select 0可以選擇第一個數據庫,編號爲0-15
       databases 16
 
      2)、redis Slave配置,將Master的配置拷貝過去覆蓋並修改
        #從redis綁定的IP地址
         bind 192.168.62.155
        #Master的IP和端口
         slaveof 192.168.62.155 6379
         #Master的密碼
          masterauth hezhixiong
 
      3)、在根目錄下建立log目錄 ,在log下建立redis.log文件。
          可通過taif -f redis.log查看日誌
 
6、啓動和客戶端命令
     一、主從redis啓動:
     分別啓動Master、salver服務器。
     #src/redis-server /soft/redis-2.8.19/redis.conf
 
      如下日誌顯示:redis主從服務器建立成功。
     [25438] 16 Mar 21:50:33.751 * Slave 192.168.62.154:6379 asks for synchronization
     [25438] 16 Mar 21:50:33.751 * Full resync requested by slave 192.168.62.154:6379
     [25438] 16 Mar 21:50:33.751 * Starting BGSAVE for SYNC with target: disk
     [25438] 16 Mar 21:50:33.751 * Background saving started by pid 25474
     [25474] 16 Mar 21:50:33.754 * DB saved on disk
     [25474] 16 Mar 21:50:33.754 * RDB: 0 MB of memory used by copy-on-write
     [25438] 16 Mar 21:50:33.772 * Background saving terminated with success
     [25438] 16 Mar 21:50:33.773 * Synchronization with slave 192.168.62.154:6379 succeeded
 
   二、客戶端命令連接: 
         #-a 後面是密碼
         redis-cli -h 192.168.62.154 -p 6379 -a hezhixiong
    三、客戶端命令設值和取值
        set user.1.name zhangsan
        get user.1.name
        #獲取鍵的數量
        dbsize
        flushdb:刪除當前數據庫中的所有key
        flushdb:刪除所有數據庫中的所有key
        select 0:選擇第1個數據庫   
        EXPIRE mykey 10  :給鍵mykey設置過期時間爲10秒
        TTL mykey:將返回10秒,意思是mykey的過期時間是10秒。如果爲0或者負數,代表沒有設置過期時間。
 
6、性能測試:
     redis服務端部署完畢後,可以通過模擬器判斷服務器的性能指標。
     1、如上命令在src目下自行,表示模擬500個客戶端,進行1萬次查詢,得出的結論是29585.80 requests per second。即每秒3萬次查詢。
     #cd src
     #redis-benchmark -h 192.168.62.155 -p 6379 -c 500 -n 10000
     2、沒有-c,默認50個客戶端,進行10萬次插入
      #redis-benchmark -h 192.168.62.155 -p 6379 -n 100000 -q script load "redis.call('set','foo','bar')"
     3、【推薦使用本語句進行性能測試】沒有-c,默認50個客戶端,隨機產生100萬個key-value連續進行200萬次get/set/等請求的性能
      redis-benchmark -h 192.168.62.155 -p 6379 -r 1000000 -n 2000000 -t get,set,lpush,lpop -P 16 -q
       
     
//刪除當前數據庫中的所有Key
flushdb
//刪除所有數據庫中的key
flushall
//下面的命令指定數據序號爲0,即默認數據庫
redis-cli -n 0 keys "*" | xargs redis-cli -n 0 del 

如果要指定 Redis 數據庫訪問密碼,使用下面的命令
redis-cli -a password -n 0 keys "*" | xargs redis-cli -a password -n 0 del
7、遺留需要繼續研究的:
    1)、redis的集羣
    2)、網狀主從
    3)、發佈訂閱,可以替換遠程用
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章