redis-py,Redis客户端王者的Python库!

文摘   2024-11-16 10:03   河南  

玩Python这么久了,要说哪个库让我印象最深,那非redis-py莫属了。这可是Python连接Redis的第一神器,不光用着顺手,性能还贼快。今天就给大家详细唠唠这个神器,看看它到底有多厉害。


装个redis-py真不费事,一行命令就搞定:


pip install redis

装完就能直接用,也不用折腾那些乱七八糟的配置。


想跟Redis建立连接,有好几种玩法:


import redis

# 最基础的连接方式

r = redis.Redis(host='localhost', port=6379, db=0)

# 用URI也行

r = redis.from_url('redis://localhost:6379/0')

# 连接池大法好

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

r = redis.Redis(connection_pool=pool)

温馨提示 :用连接池准没错!它能帮你管理连接资源,避免重复创建连接浪费资源。


redis-py对Redis的五大数据类型支持得可谓是面面俱到:


# 字符串操作

r.set('name', '柏舟')

r.get('name')

# 列表操作

r.lpush('languages', 'Python')

r.lpush('languages', 'Java')

r.lrange('languages', 0, -1)

# 集合操作

r.sadd('skills', 'coding')

r.smembers('skills')

# 哈希表操作

r.hset('user:1', 'name', '柏舟')

r.hset('user:1', 'age', '18')

r.hgetall('user:1')

# 有序集合操作

r.zadd('ranking', {'Python':100, 'Java':95})

r.zrange('ranking', 0, -1, withscores=True)

要说redis-py最秀的地方,那就得是它的管道(Pipeline)技术了:


# 使用管道一次性执行多个命令

with r.pipeline() as pipe:

    pipe.set('name', '柏舟')

    pipe.sadd('skills', 'Redis')

    pipe.zadd('ranking', {'Redis':99})

    pipe.execute()

用管道可以把多个命令打包一次性发给Redis执行,这样能大大提升性能。我测试过,性能能提升好几倍呢!


redis-py的异常处理设计得挺人性化:


try:

    r.set('test', 'value')

except redis.ConnectionError:

    print('连接出问题了,快看看Redis服务器是不是挂了!')

except redis.RedisError as e:

    print(f'别的错误:{e}')

温馨提示 :记得处理好异常,不然程序容易莫名其妙就崩溃了。


redis-py的事务支持也是相当给力:


# 开启事务

with r.pipeline() as pipe:

    try:

        pipe.watch('account_balance')

        # 执行一系列操作

        pipe.multi()

        pipe.set('account_balance', 1000)

        pipe.execute()

    except redis.WatchError:

        print('有人动了我们正在处理的数据!')

写代码的时候记得加上事务,不然多个程序一起操作数据容易乱套。


redis-py这个库是真的香,用了这么久我都没觉得腻。它不光能满足日常开发需求,还能应付高并发的场景。不管是做缓存、计数器,还是消息队列,都是把好手。真要说缺点,可能就是文档有点简略,不过问题不大,常用的功能都能找到例子。

财经时间眼
每天更新好看的视频
 最新文章