redis屬於單程序的服務,它主要受記憶體、cpu、磁碟io(主要是做持久化),如果伺服器配置比較高,多核cpu、高記憶體的伺服器,可以考慮做redis多例項。做多例項之前,首先要考慮cpu和記憶體的利用,我在測試的時候發現,redis在qps為6-8w左右的時候,這個redis所在的邏輯cpu核的負載就在100%左右,所以要優化cpu使用這塊,目前一般是是做網絡卡軟中斷來實現平衡這種單程序使用cpu過高的情況,不過需要網絡卡支援網絡卡軟中斷,效果不錯。
多例項redis的管理,涉及到監控、服務的管理等,這裡只說redis多例項的重啟。以下是多例項的重啟指令碼,僅供交流參考:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import redis,threading,sys,socket,time,os
from multiprocessing import pool
def port_check(host,port):
pool = redis.connectionpool(host=host, port=port)
my_server = redis.redis(connection_pool=pool)
try:
a = my_server.ping()
if a:
return 1
else:
return 0
except exception,e:
return 0
def shutdown_server(host,port):
flag = port_check(host,port)
if flag == 1:
pool = redis.connectionpool(host=host, port=port)
my_server = redis.redis(connection_pool=pool)
my_server.shutdown()
while 1:
flag = port_check(host,port)
if flag == 0:
print "%s:%s is shutdown ok" % (host,port)
break
else:
time.sleep(1)
else:
print "%s:%s is shutdown alreaday" % (host,port)
def start_server(host,port):
flag = port_check(host,port)
if flag == 0:
start_conm = "/usr/local/bin/redis-server /usr/local/redis/etc/redis_%s.conf" % port
os.popen(start_conm)
time.sleep(3)
i = 0
while 1:#每5s檢測一次redis ping,持續一分鐘,1分鐘沒有起來認為啟動失敗
flag = port_check(host,port)
if flag == 1:
print "%s:%s is start ok" % (host,port)
break
else:
if i > 12:
print "%s:%s is start error" % (host,port)
break
else:
time.sleep(5)
i = i + 1
else:
print "%s:%s is start alreaday" % (host,port)
def restart(host,port):
shutdown_server(host,port)
start_server(host,port)
def main():
server_list = ["127.0.0.1:6379","127.0.0.1:16379"]
pool = pool(processes=3)
for i in server_list:
aa = i.split(':')
host = aa[0]
port = int(aa[1])
pool.close()
pool.join()
if results.successful():
print 'successful'
if __name__=="__main__":
main()
redis多例項配置
如果需要使用redis多例項。可以直接在安裝目錄中找到 etc redis.conf檔案,並且將其複製成redis6380.conf檔案。後面的數字就是想設定的埠號。需要修改這個檔案中的下面幾句話 by default redis does not run as a daemon.use yes i...
redis多例項執行
有的時候會遇到一種情況,在一台伺服器,乙個redis例項會出現不夠用的情況 那麼這時我們可以建立多個例項,以滿足不同的業務需求和功能需求 1.首先建立乙個執行redis的普通使用者 useradd s sbin nologin g zxredis zxredis 2.然後給相應的目錄授權 chown...
redis的多例項
redis的多例項功能,可以在乙個機器上,啟動多個redis服務端 vim redis.conf 寫入以下內容 不要加上注釋 port 6379 bind 0.0.0.0 daemonize no 後台執行redis pidfile data 6379 redis.pid 將redis程序的id寫入...