標籤:
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資料庫安裝部署