python连接redis 多个db_python——连接Redis数据库

本文介绍如何使用Python连接Redis数据库,通过`redis.Redis`或`redis.StrictRedis`创建连接池,并展示了基本的读写操作。还提供了一个用户登录的业务流程示例,演示了在Redis和MySQL之间进行数据交互的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

建立与Redis的连接

import redis

pool = redis.ConnectionPool(host='localhost', port=6379)

# 默认情况下每创建一个Redis实例都会构造出一个ConnectionPool实例,每一次访问redis都会从这个连接池得到一个连接,操作完成后会把该连接放回连接池(连接并没有释放),可以构造一个统一的ConnectionPool,在创建Redis实例时,可以将该ConnectionPool传入,那么后续的操作会从给定的ConnectionPool获得连接,不会再重复创建ConnectionPool。

# 默认情况下没有设置keepalive和timeout,建立的连接是blocking模式的短连接。

# 不考虑底层tcp的情况下,连接池中的连接会在ConnectionPool.disconnect中统一销毁。

r = redis.Redis(connection_pool=pool)

r = redis.StrictRedis(host='localhost', port=6379)

操作

方式一:根据数据类型的不同,调用相应的方法,完成读写

r.set('name','hello')

temp = r.get('name')

print(temp)

>> b'hello'  # b代表二进制 .decode() 一下就好了

方式二:pipline

缓冲多条命令,然后一次性执行,减少服务器-客户端之间TCP数据库包,从而提高效率

pipe = r.pipeline()

pipe.set('name', 'world')

pipe.get('name')

pipe.execute() # 一次性执行缓存的命令

示例:用户登录

业务过程如下:

输入用户名、密码

密码加密

判断redis中是否记录了用户名,如果有则成功

如果redis中没有用户名,则到mysql中查询

从mysql中查询成功后,将用户名记录到redis中

import pymysql,redis

username = input("请输入用户名:")

password = input("请输入密码:")

pool = redis.ConnectionPool(host='localhost', port=6379)

r = redis.Redis(connection_pool=pool) # 创建redis连接

if r.get(username):

if password == r.get(username).decode(): # python3获取的是bytes类型,要decode一下

print('redis')

print("登录成功!")

else:

print("密码输入错误")

else:

conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='xxx', db='xingedb') # 创建mysql连接

cursor = conn.cursor() # 创建游标

try:

cursor.execute('select password from cmdb_userinfo where username = %s;',[username,]) # 执行SQL语句,并返回受影响的行数

pwd = cursor.fetchone()[0]

if pwd == password:

print('mysql')

print('登录成功!')

r.set(username, password)

else:

print("密码输入错误")

except Exception as e:

print("您输入的用户不存在")

conn.commit() # 提交,不然无法保存新建或者修改的数据

cursor.close() # 关闭游标

conn.close() # 关闭连接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值