使用redis实现程序或者服务的高可用
Posted lucky-heng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用redis实现程序或者服务的高可用相关的知识,希望对你有一定的参考价值。
使用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 Sentinel安装与部署,实现redis的高可用
redis入门到精通系列:redis的高可用--主从复制详解