跳转到内容

Redis数据库简介与使用

  1. 理解 Redis 数据库的基本原理及其在缓存和数据存储中的作用。
  2. 掌握如何使用 Python 的 redis 库进行数据存储和查询。
  3. 学会将 Redis 客户端集成到工程化代码中。

Redis(Remote Dictionary Server)是一个高性能的键值对数据库,常用于缓存、会话管理等场景。它支持多种数据结构(如字符串、哈希、列表等),并提供快速的内存操作。

  • 高性能:数据存储在内存中,读写速度极快。
  • 持久化:支持 RDB 和 AOF 两种持久化方式。
  • 灵活性:支持多种数据类型和丰富命令。
  • 简单易用:提供直观的 API,易于集成。
  • 缓存查询结果以减少数据库压力。
  • 存储用户会话信息。
  • 实现排行榜或计数器功能。

redis_lesson/
├── redis_client.py # Redis 客户端模块
├── base.py # 配置文件和日志模块
├── main.py # 主程序入口
└── requirements.txt # 依赖文件
import redis
import json
from base import Config, logger
class RedisClient:
def __init__(self):
self.logger = logger
try:
self.client = redis.StrictRedis(
host=Config().REDIS_HOST,
port=Config().REDIS_PORT,
password=Config().REDIS_PASSWORD,
db=Config().REDIS_DB,
decode_responses=True
)
self.logger.info("Redis 连接成功")
except redis.RedisError as e:
self.logger.error(f"Redis 连接失败: {e}")
raise
def set_data(self, key, value):
try:
self.client.set(key, json.dumps(value))
self.logger.info(f"存储数据到 Redis: {key}")
except redis.RedisError as e:
self.logger.error(f"Redis 存储失败: {e}")
def get_data(self, key):
try:
data = self.client.get(key)
return json.loads(data) if data else None
except redis.RedisError as e:
self.logger.error(f"Redis 获取失败: {e}")
return None
def get_answer(self, query):
try:
answer = self.client.get(f"answer:{query}")
if answer:
self.logger.info(f"从 Redis 获取答案: {query}")
return answer
return None
except redis.RedisError as e:
self.logger.error(f"Redis 查询失败: {e}")
return None
from redis_client import RedisClient
import logging
# 配置日志
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)
def main():
# 初始化 Redis 客户端
redis_client = RedisClient()
# 示例数据
key = "user:1"
value = {"name": "Alice", "age": 25}
# 存储数据
redis_client.set_data(key, value)
# 获取数据
result = redis_client.get_data(key)
if result:
logger.info(f"查询结果: {result}")
else:
logger.info("未找到数据")
# 示例查询缓存
query = "test_query"
answer = redis_client.get_answer(query)
if answer:
logger.info(f"缓存答案: {answer}")
else:
logger.info("未找到缓存答案")
if __name__ == "__main__":
main()
import logging
# 配置日志
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)
class Config:
REDIS_HOST = "localhost"
REDIS_PORT = 6379
REDIS_PASSWORD = None
REDIS_DB = 0
redis

运行 main.py,假设 Redis 服务器运行在本地,输出如下:

2025-05-12 10:00:01,123 - INFO - Redis 连接成功
2025-05-12 10:00:01,124 - INFO - 存储数据到 Redis: user:1
2025-05-12 10:00:01,125 - INFO - 查询结果: {'name': 'Alice', 'age': 25}
2025-05-12 10:00:01,126 - INFO - 未找到缓存答案
  • 数据以 JSON 格式存储,适合复杂结构。
  • get_answer 方法用于查询缓存,减少重复计算。
  • 异常处理确保代码鲁棒性,避免 Redis 连接或操作失败导致程序崩溃。

本节主要介绍了 Redis 数据库的操作原理和应用:

  • 原理:高性能键值对存储,适合缓存和快速数据访问。
  • 应用:通过 redis 库实现数据存储、查询和缓存。

下一章将介绍如何将 Redis 与其他算法(如 BM25)结合,提升检索效率。