为了账号安全,请及时绑定邮箱和手机立即绑定

python如何选择redis数据库?

/ 猿问

python如何选择redis数据库?

九州编程 2018-07-26 22:37:44

选择redis数据库,select 1,select 2

但是在python中是怎么操作的?我只知道r = redis.Redis(host='localhost',port=6379,db=0)

这个db如何切换,难道每次都要redis.Redis(host='localhost',port=6379,db=1),

redis.Redis(host='localhost',port=6379,db=2)吗


查看完整描述

2 回答

?
交互式爱情

程序是死的,但规则是人定的,官网不让这么做,并不是说不能实现,是会造成数据库指向的错误。其实你在不怕这种错误的情况下,自己去看看redis模块的各种方法源码,在方法定义的地方自己加上一个select方法就可以了,不忘了给Redis类一个current_db属性来标记当前数据库。当然我没试过,只是提供一种思路。

查看完整回答
反对 回复 2018-07-30
?
DIEA

是的,目前只能这样。 
原因是redis-py为了保证Redis实例的线程安全,没有实现SELECT指令

Redis 客户端实例可以安全地在线程间共享。从内部实现来说,只有在命令执行时才获取连接实例,完成后直接返回连接池,命令永不修改客户端实例的状态。但是,有一点需要注意:SELECT 命令。SELECT 命令允许切换当前连接使用的数据库。新的数据库保持被选中状态,直到选中另一个数据库或连接关闭。这会导致在返回连接池时,连接可能指定了别的数据库。因此,redis-py 没有在客户端实例中实现 SELECT 命令。如果要在同一个应用中使用多个 Redis 数据库,应该给第一个数据库创建独立的客户端实例(可能也需要独立的连接池)。

参考

  1. 官方文档-线程安全

  2. 中文文档-线程安全


查看完整回答
反对 回复 2018-07-30
  • 2 回答
  • 0 关注
  • 381 浏览
我要回答

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信