【后端】redis的缓存使用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


前言

随着开发语言及人工智能工具的普及,使得越来越多的人学习Redis,MySQL等数据库,本文主要是介绍Redis的缓存存储使用场景。


一、Redis是什么

Redis 是一个开源的高性能键值数据库,通常用作数据结构服务器,支持多种类型的数据结构如字符串、哈希表、列表、集合、有序集合等。它支持数据的持久化,可以将内存中的数据保存在磁盘上,还支持事务、复制和自动分区等功能。

Redis 被广泛用于缓存解决方案,因为它提供极高的性能,使其能够快速读取和写入,从而大大减少了数据访问的延迟。此外,它还常用于实现会话缓存、消息队列系统、快速计数系统等。

二、Redis的缓存使用

当在Python中使用Redis进行缓存存储时,通常会涉及将数据从数据库或其他数据源中读取并存储在Redis中,以便后续访问时能够快速获取数据。以下是一个简单的示例,展示了如何在Python中使用Redis作为缓存存储的案例:

python 复制代码
import redis
import json
import time

# 连接到Redis服务器
redis_client = redis.StrictRedis(host='localhost', port=6379, db=0)

# 模拟从数据库中获取数据的函数
def fetch_data_from_database():
    # 这里模拟从数据库中获取数据,实际应用中可能是查询数据库或其他数据源
    # 这里简单返回一个字典作为模拟数据
    return {'user_id': 123, 'username': 'example_user', 'email': 'user@example.com'}

def get_user_data(user_id):
    # 先尝试从Redis缓存中获取数据
    cached_data = redis_client.get(f'user:{user_id}')
    
    if cached_data:
        # 如果缓存中存在数据,则直接返回
        return json.loads(cached_data)
    else:
        # 如果缓存中不存在数据,则从数据库中获取数据,并存储到Redis缓存中
        user_data = fetch_data_from_database()
        redis_client.setex(f'user:{user_id}', 3600, json.dumps(user_data))  # 设置缓存过期时间为1小时
        return user_data

# 测试获取用户数据
user_id = 123
start_time = time.time()
user_data = get_user_data(user_id)
end_time = time.time()
print(f'从缓存中获取用户数据:{user_data}')
print(f'耗时:{end_time - start_time}秒')

# 再次获取用户数据,这次应该从缓存中获取,而不是从数据库中读取
start_time = time.time()
user_data = get_user_data(user_id)
end_time = time.time()
print(f'再次从缓存中获取用户数据:{user_data}')
print(f'耗时:{end_time - start_time}秒')

在这个示例中,我们首先连接到了Redis服务器,然后定义了一个函数fetch_data_from_database()来模拟从数据库中获取用户数据。然后,我们定义了一个函数get_user_data()来获取用户数据,它首先尝试从Redis缓存中获取数据,如果缓存中不存在,则从数据库中获取数据,并将其存储到Redis缓存中。在存储到缓存中时,我们使用了setex()方法设置了缓存的过期时间为1小时。


三、总结

以上就是今天要讲的内容,通过这样的方式,我们可以利用Redis作为缓存存储,加速数据的访问,降低数据库的负载,提高应用的性能和扩展性。

相关推荐
服务端相声演员10 小时前
MySQL的select distinct ..Union all和select..union的区别
数据库·mysql
2501_9304724410 小时前
深度复盘|数据库迁移实战(下):从自建 MySQL 5.7 到腾讯云 MySQL 8.0 的 SQL 兼容改造
数据库·mysql·腾讯云
2501_9304724410 小时前
深度复盘|数据库迁移实战(上):腾讯云助手解析慢查询日志,定位索引缺失与语法不兼容
数据库·阿里云·ffmpeg·云计算·腾讯云·aws
SelectDB技术团队10 小时前
从 ClickHouse 迁移到 Doris:SQL 兼容、同步与验证清单
数据库·人工智能·sql·clickhouse·apache doris·selectdb·湖仓架构升级
敲代码的嘎仔10 小时前
从零实现视频续播 + 学习进度统计:前端心跳、条件更新、GROUP BY 统计全链路拆解
java·前端·数据库·学习·面试·职场和发展·音视频
草莓熊Lotso10 小时前
【Redis 初阶】C++ 客户端实战:从 RESP 协议到 redis-plus-plus 工程化用法
linux·开发语言·网络·数据库·c++·redis·缓存
dunge202611 小时前
2026年9月11日|ChatGPT Pro + Codex:GPT‑6 Astra 数据库性能优化
数据库·gpt·chatgpt
NeilYuen11 小时前
【kv存储】结合faiss构建向量内存数据库
数据库·faiss
风哥2号11 小时前
数据库教程FGMT18‑Oracle‑EMCC智能化集中运维管理系统
运维·数据库·oracle
YHHLAI11 小时前
基于 Next.js 16 + Redis 的全栈笔记博客系统
javascript·redis·笔记