redis多例項重啟指令碼

2021-09-04 23:45:00 字數 2305 閱讀 8283

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寫入...