python使用redis缓存
时间: 2025-05-09 22:19:37 浏览: 48
### 如何在 Python 中使用 Redis 实现缓存功能
Redis 是一种高效的键值存储系统,常被用作缓存层以提升应用性能。以下是关于如何通过 Python 使用 Redis 来实现缓存的具体方法。
#### 连接 Redis 数据库
要连接到 Redis 服务器,通常需要借助 `redis-py` 库。此库提供了简单易用的接口来与 Redis 进行交互[^1]。安装该库可通过 pip 安装命令完成:
```bash
pip install redis
```
建立连接时需指定主机名、端口号以及可选密码参数等基本信息:
```python
import redis
# 创建 Redis 连接对象
r = redis.Redis(host='localhost', port=6379, db=0, decode_responses=True)
```
此处设置了解码选项 (`decode_responses`) 将返回字符串而非字节串形式的数据[^2]。
#### 缓存数据的操作
对于基本的缓存操作而言,主要涉及两个方面——写入缓存和读取缓存。
##### 存储数据至缓存
当希望保存某些计算结果或其他动态生成的内容以便后续快速访问时,可以利用如下方式将其存放到 Redis 当中:
```python
def set_cache(key, value, ex=None):
""" 设置缓存 """
r.set(name=key, value=value, ex=ex)
set_cache('my_key', 'value_of_my_key', ex=3600) # 设定有效期为 1 小时
```
上述代码片段展示了如何向 Redis 添加一条记录,并支持定义其生存周期 (TTL),单位默认为秒数。
##### 获取已存在的缓存项
如果之前已经设置了某个特定 key 的关联值,则可以直接调用 get 方法尝试检索它;如果没有找到对应条目或者超出了设定时限,则应重新加载原始资源并将新版本更新回缓存之中:
```python
def get_cache(key):
""" 获取缓存 """
cached_value = r.get(key)
return cached_value if cached_value is not None else False
result = get_cache('my_key')
if result:
print(f'From Cache: {result}')
else:
actual_data = fetch_actual_data() # 假设有这样一个获取真实数据的方法
set_cache('my_key', actual_data, ex=3600)
print(f'Refreshed Data: {actual_data}')
```
这里体现了典型的缓存模式逻辑流程:先查询是否有匹配的结果存在于高速缓冲区里头;一旦发现缺失情况就转而请求底层较慢但更权威的信息源,最后再同步刷新到前端展示给用户的同时也补充进去了我们的临时储存池子当中去。
另外值得注意的是,在高并发环境下单纯依赖本地内存可能无法满足需求,因此推荐采用像 Redis 那样的集中式解决方案[^3]。
#### 装饰器封装简化开发体验
为了进一步优化用户体验并减少重复劳动量,还可以创建自定义装饰器自动处理这些繁琐的过程:
```python
class RedisCache:
@staticmethod
def cache(expire_time):
def decorator(func):
def wrapper(*args, **kwargs):
func_name = f'{func.__name__}_{str(args)}_{str(kwargs)}'
res = get_cache(func_name)
if res != False:
return res
output = func(*args, **kwargs)
set_cache(func_name, str(output), ex=expire_time)
return output
return wrapper
return decorator
@RedisCache.cache(3600)
def expensive_computation(x, y):
import time;time.sleep(5);return x+y
print(expensive_computation(1,2))
```
以上例子说明了怎样构建一个通用型的函数修饰符使得每次调用目标动作前都会优先考虑是否存在有效的近似副本可用从而避免不必要的重算开销。
---
阅读全文
相关推荐




















