Redis資料庫安裝部署

來源:互聯網
上載者:User

標籤:

1.安裝版本

redis-3.0.7.tar.gz

官網連結:http://redis.io/download

2.下載安裝包

wget http://download.redis.io/releases/redis-3.0.7.tar.gz

3.解壓

tar -zxvf redis-3.0.7.tar.gz

解壓後進入redis-3.0.7檔案夾內

4.安裝

Redis檔案夾內建makefile檔案,直接在redis-3.0.7檔案夾中輸入make命令即可。

5.運行redis

cd src執行./redis-server命令運行redis,Redis 服務端的預設串連連接埠是 6379。

 

 

6.將Redis作為 Linux 服務開機啟動

/root/software/redis-3.0.7/src/redis-server

 

7.用戶端串連驗證

進入/root/software/redis-3.0.7/src檔案夾中,執行./redis.cli命令即啟用redis用戶端串連redis伺服器。

 

8.操作redis資料庫

 

9.配置Redis.conf

daemonize yes #指定Redis以守護進程的方式運行。

pidfile /var/run/redis.pid   #當Redis以守護進程方式運行時,把pid寫入指定的檔案。

port 6379 #指定監聽連接埠,預設連接埠為6379。

bind 192.168.0.35 #綁定的主機IP地址。

logfile /var/log/redis/redis.log #指定日誌的記錄方式,預設為標準輸出。

databases 16 #設定資料庫的數量。

Save #Redis預設設定檔中提供了三個條件:

save 900 1

save 300 10

save 60 10000 #分別表示900秒(15分鐘)內有1個更改,300秒(5分鐘)內有10個更改以及60秒內有10000個更改的時候,同步資料到磁碟檔案。

rdbcompression yes #指定儲存至本機資料庫時是否壓縮資料,預設為yes。

dbfilename dump.rdb #指定本機資料庫檔案名稱。

dir /home/banping/redis/data #指定本機資料庫存放目錄。

requirepass password #設定Redis串連密碼,預設關閉。

maxclients 128 #設定最大用戶端串連數,預設無限制。

maxmemory #指定Redis能使用的最大記憶體。

(註:警告問題及解決辦法

警告:WARNING overcommit_memory is set to 0! Background save may fail under low memory condition....

解決辦法:在/etc/sysctl.conf設定檔中添加vm.overcommit_memory = 1,然後sysctl -p重啟一下服務。

 

警告:WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.

解決辦法:在/etc/sysctl.conf設定檔中添加net.core.somaxconn = 1024 然後sysctl -p重啟一下服務。

警告:WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis....

解決辦法:以root身份執行echo never > /sys/kernel/mm/transparent_hugepage/enabled命令,然後將此命令加入到/etc/rc.local中。

)

 

正確日誌輸出:

 

 

二、安裝Redis的python包

1.redis的python包下載

我的python是python2.6,執行下載命令為wget https://github.com/andymccurdy/redis-py/archive/master.zip 即可下載。

2.解壓安裝

unzip master.zip

cd redis-py-master

sudo python2.6 setup.py install

路徑/usr/lib/python2.6/sitepackage檔案夾下的setuptools-20.2.2-py2.6.egg  就是我們想要的。

3.測試python可不可以操作資料庫

import redis

r = redis.StrictRedis(host=‘localhost‘, port=6379, db=0)

r.set(‘test‘, ‘test123‘)

r.get(‘test‘)

r.delete(‘test‘)

r.config_get("maxmemory")

 

如所示,可以使用python操作資料庫了。

三、Python對redis訪問的基本API封裝

#!/usr/bin/python#coding=utf-8import redisclass CRedis:def __init__(self):self.host = 'localhost'        self.port = 6379        self.db = 0        self.r = redis.Redis(host = self.host, port = self.port, db = self.db)     #1. strings 類型及操作    #設定 key 對應的值為 string 類型的 value    def set(self, key, value):        return self.r.set(key, value)def get(self, key):        return self.r.get(key)    #設定 key 對應的值為 string 類型的 value。如果 key 已經存在,返回 0,nx 是 not exist 的意思    def setnx(self, key, value):        return self.r.setnx(key, value)     #設定 key 對應的值為 string 類型的 value,並指定此索引值對應的有效期間    def setex(self, key, time, value):        return self.r.setex(key, time, value)     #設定指定 key 的 value 值的子字串    #例:setrange name 8 gmail.com    #其中的 8 是指從下標為 8(包含 8)的字元開始替換    def setrange(self, key, num, value):        return self.r.setrange(key, num, value)     #擷取指定 key 的 value 值的子字串    def getrange(self, key, start ,end):        return self.r.getrange(key, start, end)#刪除    def remove(self, key):        return self.r.delete(key)     #自增    def incr(self, key, default = 1):        if (1 == default):            return self.r.incr(key)        else:            return self.r.incr(key, default)     #自減    def decr(self, key, default = 1):        if (1 == default):            return self.r.decr(key)        else:            return self.r.decr(key, default)    #清空當前db    def clear(self):        return self.r.flushdb()if __name__ == '__main__':     r = CRedis()r.set(name, allesa)r.get(name)r.remove(name)


四、Redis的兩種備份方式

1.RDB

預設情況下60秒重新整理到disk一次[save 60 10000 當有1w條keys資料被改變時],Redis的資料集儲存在叫dump.rdb一個二進位檔案,這種策略被稱為快照。

可以手動調用Save或BGSAVE命令的:/root/software/redis-3.0.7/src/redis-cli -h 127.0.0.1 -p 6379 -a pwd bgsave

2.AOF

快照易恢複,檔案也小,但是如果遇到宕機等情況的時候快照的資料可能會不完整。此時可能需要啟用另一種持久化方式AOF,在設定檔中開啟[appendonly yes]。

AOF重新整理日誌到disk的規則:

appendfsync always #always 表示每次有寫操作都進行同步,非常慢,非常安全。

appendfsync everysec #everysec表示對寫操作進行累積,每秒同步一次。

官方的建議的everysec,安全,就是速度不夠快,如果是機器出現問題可能會丟失1秒的資料。

也可以手動執行bgrewriteaof進行AOF備份:

/usr/local/bin/redis-cli -h 127.0.0.1 -p 6379 -a pwd bgrewriteaof

我們現在的做法是一主(Master)多從(Slave),主庫不開啟AOF持久化,只是每天備份一下RDB[官方給的建議是每小時備份RDB檔案,看你的策略了],而在從庫上開啟AOF備份,並且會用指令碼將相應的備份檔案推送到備份伺服器。

當redis伺服器掛掉時,重啟時將按照以下優先順序恢複資料到記憶體:

如果只配置AOF,重啟時載入AOF檔案恢複資料;

如果同時配置了RBD和AOF,啟動時只載入AOF檔案恢複資料;

如果只配置RBD,啟動時將載入dump檔案恢複資料。

恢複時需要注意,要是主庫掛了不能直接重啟主庫,否則會直接覆蓋掉從庫的AOF檔案,一定要確保要恢複的檔案都正確才能啟動,否則會衝掉原來的檔案。

Redis資料庫安裝部署

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.