当前位置: 代码迷 >> 综合 >> redis与mysql数据互通
  详细解决方案

redis与mysql数据互通

热度:54   发布时间:2024-01-26 05:07:29.0
from time import sleepimport pymysql
from rediscluster import StrictRedisClusterclass MysqldbHelper(object):def __init__(self, host='数据库地址', username='登录名', password='密码', database='库名称', charset='utf8'):self.host = hostself.username = usernameself.password = passwordself.database = databaseself.con = Noneself.cur = Noneself.charset = charsettry:self.con = pymysql.connect(host=self.host, user=self.username, passwd=self.password,db=self.database)# self.con = pymysql.connect(host=self.host, user=self.username, passwd=self.password, port=self.port,#                            db=self.database)# 所有的查询,都在连接 con 的一个模块 cursor 上面运行的self.cur = self.con.cursor()print('mysql :', self.database, '数据库成功连接')except Exception as  e:print(e)def execute(self, sql):sql_ = sqltry:self.cur.execute(sql_)results = self.cur.fetchall()# print(results)return resultsself.cur.close()except pymysql.Error as e:error = 'MySQL execute failed! ERROR (%s): %s' % (e.args[0], e.args[1])print(error)# redis集群中的所有主结点(所有master结点)
startup_nodes = [{'host': '172.17.0.4', 'port': '6379'},{'host': '172.17.0.5', 'port': '6380'},{'host': '172.17.0.6', 'port': '6381'},{'host': '172.17.0.7', 'port': '6382'},{'host': '172.17.0.8', 'port': '6383'},{'host': '172.17.0.9', 'port': '6384'},
]if __name__ == '__main__':try:# 连接mysqlsql = MysqldbHelper(host='192.168.76.146',username='root',password='123456',charset='utf-8',database='test_data')# 连接Redis集群# 构建StrictRedisCluster对象rClu = StrictRedisCluster(startup_nodes=startup_nodes, decode_responses=True, password="123456")print('Redis 集群连接成功')except Exception as e:print(e)command = ["select * from test_data", "desc test_data"]desc = []print('获取mysql信息到Redis')result = sql.execute(command[1])  # 顺序获取字段名称for name in range(len(result)):desc.append(result[name][0])passresult = sql.execute(command[0])  # 将id添加到Redis set中for i in range(len(result)):for j in range(len(result[i])):# rClu.sadd(desc[j], result[i][j])rClu.set(name=result[i][j], value='登录', ex=5, nx=True)  # 过期时间5s,存在不设置# print(desc[j], ':', result[i][j])passfor i in range(len(result)):  # 每个用户print(result[i][0], ':', rClu.get(result[i][0]))print('休息5秒')sleep(5)for i in range(len(result)):  # 每个用户print(result[i][0], ':', rClu.get(result[i][0]))pass
  相关解决方案