码迷,mamicode.com
首页 > 其他好文 > 详细

使用redis实现程序或者服务的高可用

时间:2019-07-04 23:54:02      阅读:227      评论:0      收藏:0      [点我收藏+]

标签:redis   class   style   简单   import   time   col   password   时间   

使用redis实现程序或者服务的高可用,就是将某一程序或服务部署在不同服务器上,或者是跨机房部署,当运行服务的服务器挂了之后,其他服务器上的该服务能立马顶上,这里我简单的使用redis实现这一目的。

思路是: 部署在不同服务器上的相同服务,隔段时间去redis上查下某一个键(自己定义),如果该键不存在,则设置该键的值,可以是自己本服务器的IP,并设置的一个过期时间,然后执行服务的业务逻辑,如果该键存在,查看该键的值是不是自己的IP,如果是,更新该键的过期时间。代码如下:

# coding:utf8
import time
import redis
import threading


REDIS_DB = {
    host: *********,
    port: *****,
    password: None,
}
KEY = "********"
EXPIRATION_TIME = 12
LOOP_TIME = 10
SERVER_IP = "1.1.1.1"


def use_redis(option=REDIS_DB):
    pool = redis.ConnectionPool(**option)
    r = redis.Redis(connection_pool=pool)
    return r


def get_key_from_redis():
    client = use_redis()
    flag = client.exists(KEY)
    if not flag:
        client.setex(KEY, SERVER_IP, EXPIRATION_TIME)
        t = threading.Thread(target=work)
        t.start()
    else:
        value = client.get(KEY)
        if value == SERVER_IP:
            client.expire(KEY, EXPIRATION_TIME)


# 模拟业务逻辑
def work(): while True: .......... time.sleep(8) if __name__ == "__main__": while True: get_key_from_redis() time.sleep(LOOP_TIME)

当然,隔段时间去查一下redis,这个时间要比key的过期时间短一些。

使用redis实现程序或者服务的高可用

标签:redis   class   style   简单   import   time   col   password   时间   

原文地址:https://www.cnblogs.com/lucky-heng/p/11135410.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!