【python】redis select

本文介绍了一种通过封装Redis模块以实现select功能的方法,详细展示了如何通过Python创建一个可切换数据库的Redis数据访问类,包括连接池的初始化及数据库切换的实现。
部署运行你感兴趣的模型镜像

说明:redis模块本身不支持select, 所以通过内部封装变向的来实现select功能, 具体代码如下:

Github

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

"""redis数据访问类"""

import redis
from .Env import Env

class Redis():
    _instance = dict()

    def __init__(self, host=None, port=6379, password=None, db=0):
        '''
        构造方法
        :param host: host
        :param port: port
        :param password: 密码
        :param db: 默认db
        '''
        env = Env()
        if host is not None:
            self.host = host
            self.port = port
            self.password = password
            self.db = db
        else:					# 读取配置文件的默认配置
            self.host = env("REDIS_HOST", 'localhost')
            self.port = int(env("REDIS_PORT", 6379))
            self.password = env('REDIS_PASSWORD', None)
            self.db = int(env("REDIS_DB", 0))

        if self._instance.get(self.db) is None:
            pool = redis.ConnectionPool(host=self.host, port=self.port, db=self.db, password=self.password, decode_responses=True)
            self._instance[self.db] = redis.Redis(connection_pool=pool)

    def select(self, db):
        '''
        切换redis库
        :param db: 库index
        :return: redis.Redis
        '''
        if type(db) != int:
            raise Exception('select db must be the type of int')
        if self._instance.get(db) is None:
            pool = redis.ConnectionPool(host=self.host, port=self.port, db=db, password=self.password, decode_responses=True)
            self._instance[db] = redis.Redis(connection_pool=pool)
        return self._instance[db]

    def __getattr__(self, key):
        '''
        默认库则调用
        :param key: redis 执行方法
        :return: result
        '''
        return self._instance.get(self.db).__getattribute__(key)

if __name__ == '__main__':
    redis = Redis(host='127.0.0.1', port=6379)
    name = redis.select(8).get('name')

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

Python中操作Redis需要导入redis模块。首先,我们需要建立与Redis的连接。可以使用`redis.Redis()`方法来创建一个连接实例,并指定Redis的主机和端口。例如,可以使用以下代码来连接到本地的Redis服务: ```python import redis r = redis.Redis(host='localhost', port=6379, decode_responses=True) ``` 在上面的代码中,`host`参数指定了Redis的主机地址,`port`参数指定了Redis的端口号,`decode_responses=True`参数表示将存储在Redis中的值以字符串形式返回。 接下来,可以使用连接实例执行各种Redis命令。例如,可以使用`set()`方法设置键值对,并使用`get()`方法获取键对应的值。例如: ```python r.set('name', 'junxi') # 设置键名为'name',值为'junxi' print(r['name']) # 通过键名获取值,输出'junxi' print(r.get('name')) # 同样可以通过get()方法获取值,输出'junxi' ``` 在上面的代码中,`set()`方法用于设置键名为'name',值为'junxi'的键值对。可以通过下标操作或者`get()`方法来获取键对应的值。 需要注意的是,Redis连接实例是线程安全的,可以将其设置为全局变量并在多个线程中共享使用。但是,如果需要访问另一个Redis实例(或Redis数据库),则需要创建一个新的连接实例来获取新的连接。此外,Pythonredis模块没有实现select命令。 希望上述解答对你有帮助。如有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值