Python连接Redis

Redis: 是一个高性能的key-value数据库。

简单来说就是:当你使用关系型数据库、文件或者其他介质存东西,性能不好反应慢,这个时候就要拿个东西做缓存。同类产品有好几种,目前比较流行,在我司进行商用的就是这个。目前,这玩意在集群状态下,为我们的百万级并发提供良好的支持。

今天,我们就来简单聊聊,如何用python操作redis。

牛小妹,把这个放进你的毕业设计,又能锦上添花哦。

redis的安装,参考文章

1.python 连接redis

普通连接

import redis

#后面是地址 端口
r = redis.Redis(host='127.0.0.1', port=6379)

2.连接池

redis-py使用connection pool来管理对一个redis server的所有连接,避免每次建立、释放连接的开销

import redis

pool = redis.ConnectionPool(host='192.168.0.110', port=6379)
r = redis.Redis(connection_pool=pool)

3.管道

redis-py,默认情况下,每次都会进行连接池的连接和断开。若是想一次执行多条命令,进行事务性操作,就要用管道。

import redis

pool = redis.ConnectionPool(host='192.168.0.110', port=6379)
r = redis.Redis(connection_pool=pool)
pipe = r.pipeline(transaction=True)

r.set('zcx', '5555')
r.set('zcx', '6666')

pipe.execute()

说明:虽然提供了这么一个功能。但实际情况还是不建议使用。因为这个执行起来慢。另一方面,也没必要

4.发布订阅

在我们学习操作系统这本书的时候,里面有个生产者和消费者。在这里,我试着用redis来模拟

定义公共的类,包装方法和初始化连接

import redis
class redis_util(object):
def __init__(self):
self.__conn = redis.Redis(host='127.0.0.1', port=6379)
self.channel = 'mybaby' # 定义通道名称

def publish(self, msg): # 定义发布的方法
self.__conn.publish(self.channel, msg)
return True

def subscribe(self): # 定义订阅的方法
pub = self.__conn.pubsub()
pub.subscribe(self.channel)
pub.parse_response()
return pub

 

publisher发布者:

from polls.redis_utils import redis_util

obj = redis_util()
obj.publish('test')

 

subscriber订阅者:

from polls.redis_utils import redis_util

obj = redis_util()
redis_sub = obj.subscribe()

while True:
msg = redis_sub.parse_response()
print(msg)

至于发布订阅。只是表达有这么一个功能。但是,不建议用。后面,我将和大家一起,更深入的讨论这方面的问题。

好啦,今晚就玩到这,要去陪我家小baby啦

<think>好的,我需要帮助用户找到如何使用Python连接Redis的示例代码。用户提到了哨兵模式,所以首先我要回忆一下之前提供的引用内容。引用[1]中有一个使用redis-py连接哨兵模式的代码示例,这可能直接相关。用户可能希望看到具体的代码步骤,包括连接主节点和从节点,以及基本操作。接下来,我需要确保代码的正确性。根据引用[3],master和slave对象是StrictRedis实例,连接池由Sentinel管理。如果Sentinel无法找到主或从节点,会抛出异常,这点需要提醒用户注意错误处理。 然后,我应该分步骤说明,比如安装redis-py、普通连接连接池以及哨兵模式。每个部分都需要代码示例,并解释关键参数,如host、port、password。同时,要提到引用中的信息,比如引用[4]提到的Redis特点,可能不需要在这里展开,但可以强调连接的重要性。 用户可能需要知道不同连接方式的区别,比如直接连接与哨兵模式的区别。此外,常见问题如密码认证、连接超时设置也是有用的,应该包含在注意事项里。最后,生成相关问题,覆盖安装、连接池优势、异常处理、主从切换等,帮助用户进一步学习。需要确保问题有针对性,引导用户深入理解。</think>### Python连接Redis的代码示例 #### 1. 安装依赖 ```bash pip install redis ``` #### 2. 普通连接模式 ```python import redis # 直接连接主节点 r = redis.Redis( host='localhost', port=6379, password='your_password', # 若无密码可省略 decode_responses=True # 自动解码二进制数据为字符串 ) # 基本操作示例 r.set('key1', 'value1') print(r.get('key1')) # 输出: value1 ``` #### 3. 连接池模式(推荐) ```python from redis import ConnectionPool pool = ConnectionPool( host='localhost', port=6379, max_connections=20, # 连接池最大容量 password='your_password' ) r_pool = redis.Redis(connection_pool=pool) ``` #### 4. 哨兵模式连接(高可用场景) ```python from redis.sentinel import Sentinel sentinel_list = [ ('sentinel1.example.com', 26379), ('sentinel2.example.com', 26379) ] # 创建哨兵对象 sentinel = Sentinel( sentinel_list, socket_timeout=0.5, # 超时时间 password='sentinel_password' ) # 获取主节点连接 master = sentinel.master_for( service_name='mymaster', password='redis_password' ) # 获取从节点连接 slave = sentinel.slave_for( service_name='mymaster', password='redis_password' ) # 读写分离示例 master.set('status', 'active') print(slave.get('status')) # 输出: b'active' (注意二进制数据) ``` #### 5. 注意事项 1. **密码认证**:若Redis启用密码,需在`password`参数中指定主节点和哨兵节点的密码[^1][^3] 2. **异常处理**:建议添加`try-except`块处理`MasterNotFoundError`等异常[^3] 3. **数据编码**:设置`decode_responses=True`可自动转换二进制返回值为字符串 4. **连接验证**:可通过`ping()`方法测试连接状态 ```python print(r.ping()) # 输出: True表示连接正常 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值