Python实现redisutil、RedisTool工具类(支持集群、哨兵、单机)

网上的 python redis 工具类写的都太泛了,没有一个完整的一劳永逸的
这里小编写了一个完整的,用起来非常方便,直接上代码

创建一个 py 文件 RedisUtil.py

import redis
import configparser

from flask import Flask
from rediscluster import RedisCluster

import settings

app = Flask(__name__)
"""
    需先安装:
       pip install redis-py-cluster
       pip install redis
       pip install configparser
"""
class RedisTool:
    def __init__(self, cluster=False, sentinel=False):
        """
            调用方式:
            1、初始化 RedisTool: redis_tool = RedisTool(True).get_client()
            2、删除:redis_tool.delete(key)
            3、String 类型
                redis_tool.set(key, value)
                redis_tool.get(key)
            4、set集合
                redis_tool.sadd(key, value1, value2...)
                redis_tool.smembers(key)
            5、list列表
                redis_tool.lpush(key, value1, value2,...)
                redis_tool.lrange(key, start, end)  # 比如列出所有conn.lrange("key_name", 0, -1)
            6、hash哈希
                redis_tool.hset(key, field, value)
                redis_tool.hget(key, filed)
                redis_tool.hgetall(key)
            7、sorted set有序集合
                # 注意:有序集合键值对是与redis中操作相反的,redis中:zadd key score value
                # python中,分值对应的是字典中的值
                redis_tool.zadd(key, {value1: score1, value2: score2})
                redis_tool.zrange(key, start, end)
        """
        try:
            # 第一步:获取 redis 配置
            host = settings.Config.host
            port = settings.Config.port
            password = settings.Config.password
            db = settings.Config.db
            startup_nodes = settings.Config.startup_nodes
            sentinel_list = settings.Config.sentinel_list
            print(f"host={host},port={port},db={db}, startup_nodes={startup_nodes}")

            # 第二步:初始化 client
            if cluster:
                # 集群
                """
                    写入值,获取值
                    client.set("key_name", "value")
                    client.get("key_name")
                """
                # client = StrictRedisCluster(startup_nodes=startup_nodes, decode_response=True, password=password,max_connection=300)
                self.client = RedisCluster(startup_nodes=startup_nodes, decode_responses=True, password=password)
                print("====================redis 集群登录成功====================")
            elif sentinel:
                """
                    # 使用master进行写的操作,使用slave进行读的操作
                    master.hset("key_name", "filed", "value")
                    slave.hget("key_name", "filed")
                    slave.hgetall("key_name")
                """
                mySentinel = redis.Sentinel(sentinel_list)
                master = mySentinel.master_for("mymaster", db=0)
                slave = mySentinel.slave_for("mymaster", db=0)
                print("====================redis 哨兵登录成功====================")
            else:
                # 单机
                """
                    string类型的写入读取
                    client.set("key_name", "value")
                    client.get("key_name")
                """
                self.client = redis.StrictRedis(host=host, port=port, db=0, decode_responses=True, password=password)
                print("====================redis 单机登录成功====================")
        except Exception as e:
            print(f"Redis 初始化异常: {e}")

    def get_client(self):
        return self.client

redis 参数配置到 settings.py 配置文件中

from urllib.parse import quote_plus as urlquote

class Config(object):
	# 单机用
    host = '172.142.208.1'
    port = 26382
    password = '123456'
    db = 0
    
    # 集群用
    startup_nodes = [
        {'host': '172.142.208.1', 'port': 26379},
        {'host': '172.142.208.1', 'port': 26380},
        {'host': '172.142.208.1', 'port': 26381},
        {'host': '172.142.208.1', 'port': 26382},
        {'host': '172.142.208.1', 'port': 26383},
        {'host': '172.142.208.1', 'port': 26384}]
    
    # 哨兵用
    sentinel_list = [
        ('172.142.208.1', '26379'),
        ('172.142.208.1', '26380'),
        ('172.142.208.1', '26381'),
        ('172.142.208.1', '26382'),
        ('172.142.208.1', '26383'),
        ('172.142.208.1', '26384')]

如何使用

  1. 在 RedisUtil.py 代码注释已经列举了,后面也不用担心忘记
  2. 业务端使用方法
# 初始化 redisTool
redis_tool = RedisTool(True).get_client()
# 直接调用命令即可
redis_tool.delete("setlist")
value = redis_tool.get('Veh_Voken_Salt_Key')

print(value)

在这里插入图片描述

微信公众号集成 ChatGPT 小编目前也搞定了,感兴趣的可以留言,后面我也会出一个教程~

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

领航猿1号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值