Redis(以Django为例,含具体操作步骤)

简介

Redis(Remote Dictionary Server)是一个开源的内存数据结构存储系统,支持多种数据结构(如字符串、哈希、列表、集合、有序集合等),可用作数据库、缓存或消息队列。其核心特点包括:

  • 高性能:数据存储在内存中,读写速度极快。
  • 持久化:支持快照(RDB)和日志(AOF)两种持久化方式。
  • 分布式:支持主从复制、哨兵模式和集群模式。
  • 多语言支持:提供多种编程语言的客户端库。

开发应用场景

  1. 缓存:加速热点数据访问,减轻数据库压力。
  2. 会话存储:存储用户会话信息,支持分布式系统。
  3. 消息队列:通过 LPUSH/BRPOP 实现简单的消息队列。
  4. 排行榜:利用有序集合(ZSET)实现实时排名。

集群与高可用

  • 主从复制:通过 replicaof 配置从节点同步主节点数据。
  • 哨兵模式:监控主节点故障并自动切换。
  • 集群模式:分片存储数据,支持水平扩展。

单线程环境下实现 Key-Value 存储

在单线程环境中实现 Key-Value 存储通常可以通过简单的数据结构完成,例如字典或哈希表。

单线程 Key-Value 存储的特点:

  • 无并发竞争:由于是单线程操作,无需考虑多线程环境下的锁机制。
  • 简单高效:直接使用语言内置的数据结构(如字典),性能较高。
  • 功能局限:缺乏持久化、事务等高级特性。

在Django中集成Redis


1. 安装django_redis
pip install django_redis

2. 配置settings.py
CACHES = {
'default': {
'BACKEND': 'django_redis.cache.RedisCache',
'LOCATION': 'redis://127.0.0.1:6379/1',
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
},
},
}
USER_AGENTS_CACHE = 'default'
3. 启动redis-server
sudo redis-server /etc/redis/redis.conf

4.检验进程是否启动

使用top命令查看是否有redis-server进程

5.可选择使用shell方式,也可代码执行

shell方式:python3  manage.py shell

Django 中通过缓存框架或 django_redis 提供的工具类操作 Redis,无需直接写 Shell 命令。

6.redis的相关代码

# 在视图、模型或管理脚本中使用
from django.core.cache import cache# 1. 存储数据(支持多种类型:字符串、字典、列表等)
cache.set('username', 'django_user', 60)  # 60秒过期
cache.set('user_info', {'id': 1, 'name': 'test'}, 300)  # 存储字典# 2. 获取数据
username = cache.get('username')  # 不存在返回 None
user_info = cache.get('user_info', default={'id': 0})  # 自定义默认值# 3. 批量操作
cache.set_many({'a': 1,'b': 2
}, 60)  # 批量存储,统一过期时间
data = cache.get_many(['a', 'b'])  # 批量获取,返回字典# 4. 删除数据
cache.delete('username')  # 删除单个键
cache.delete_many(['a', 'b'])  # 批量删除
cache.clear()  # 清空所有缓存(谨慎!)# 5. 原子操作(自增/自减,适用于计数器)
cache.incr('visit_count')  # 自增 1
cache.decr('visit_count', 2)  # 自减 2

shell下也支持正则表达式

cache.keys(' * ')

cache.delete(' 某内容 ')

cache.set(state, True,720)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/94262.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/94262.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浏览器解析网址的过程

问题浏览器解析网址的过程我的回答当你在浏览器地址栏输入一个URL(比如www.example.com)并按下回车后,会发生以下一系列步骤:首先,浏览器会解析URL结构,确定要访问的协议、域名和路径。如果你没有输入协议部…

NVIDIA Nsight Systems性能分析工具

* 性能分析 NVIDIA Nsight Systems (推荐): 这是 NVIDIA 官方推荐的更现代、功能更强大的分析工具。 安装 Nsight Systems在 Docker 容器中启动程序:# 确保你在启动容器时挂载了/usr/local/cuda/targets/x86_64-linux/lib/ 和 /usr/local/nvidia/lib64 #…

后台管理系统-14-vue3之tag标签页的实现

文章目录 1 tag静态实现 1.1 CommonTag.vue(el-tag) 1.2 Main.vue(普通组件标签) 2 tag通过pinia管理 2.1 CommonAside.vue(菜单点击事件) 2.2 stores/index.js(selectMenu()和tags) 2.3 CommonTag.vue(计算属性tags) 3 点击tag之后跳转到指定页面 3.1 views/Mail.vue(商品) 3.…

CMake2: CMakeLists.txt的常用命令

参考链接: 爱编程的大丙 | CMake教程 CMakeLists指令以及常用方法 现代 CMake 教程 文章目录1. cmake_minimum_required( )2. project( )3. add_executable( )4. set()5. aux_source_directory( )6. file( )7. include_directories( )8. add_library( )9. link_libraries()与li…

Ansible入门:自动化运维基础

Ansible 基础概念与安装1. 自动化动机 (Motivation for Automation)概念解释: 指为什么要用Ansible等工具来替代手动管理服务器。核心动机包括:效率与速度: 同时在上百甚至上千台服务器上执行任务,秒级完成,远非人工可…

【测试】基于博客系统的测试报告

前言 本篇博客对简易的博客系统做的测试总结一份测试报告,包含功能测试,自动化测试,性能测试 💓 个人主页:zkf ⏩ 文章专栏:测试 若有问题 评论区见📝 🎉欢迎大家点赞👍…

Oracle:配置让插入语句时id自动输入

Oracle:配置让插入语句时id自动输入无需手动指定,核心是利用 序列(Sequence) 或 自增列(Identity Column) 来自动生成唯一值。以下是两种常用方案:方案 1:使用序列(Sequence&#xf…

秒杀服务的回调方案

在秒杀场景中,用户点击“抢购”后,后端需要通过异步处理应对高并发(避免请求阻塞),同时需通过实时回调机制将最终结果(成功/失败)推送给客户端并展示。核心方案是:“前端发起请求→后…

php apache无法接收到Authorization header

Apache 默认不传递 Authorization头到后端环境(如 PHP)。其表现是:print_r($_SERVER)时, 没有 [Authorization] :Array ([Accept-Language] > zh,en;q0.9,zh-CN;q0.8,en-US;q0.7[Accept-Encoding] > gzip, defla…

当我们想用GPU(nlp模型篇)

在个人设备上“把 GPU 真正用起来”做 NLP,分五步:准备 → 安装 → 验证 → 训练/推理 → 踩坑排查。下面每一步都给出可复制命令和常见错误。 ────────────────── 1. 硬件准备 • 一张 NVIDIA GPU,算力 ≥ 6.1&#xff08…

CryptSIPVerifyIndirectData函数分析

可以使用此函数从SIP接口对应的文件中提取签名信息 CryptSIPVerifyIndirectData:将当前文件的哈希结果做为“指纹”,并与从CryptSIPGetSignedDataMsg中提取的签名信息进行比较。 如果哈希结果相同,则意味着当前文件与之前签名的文件相同&…

20250823解决荣品RD-RK3588-MID开发板在充电的时候大概每10s屏幕会像水波纹闪烁一下

20250823解决荣品RD-RK3588-MID开发板在充电的时候大概每10s屏幕会像水波纹闪烁一下 2025/8/23 17:58【结论】:使用直流电源供电,给电池【快速】充电,但是直流电源的电压稳定,电流抖动导致的!那个是2.4G 已经知道了我司…

CANN安装

前提条件 请参考本文档正确安装和使用CANN软件,不建议将CANN安装在共享磁盘后,通过挂载的方式使用CANN,因为CANN对文件系统有文件锁的依赖,部分共享存储不支持文件锁,可能导致任务拉起失败。 root用户和非root用户安装CANN软件包的步骤一致,当前示例步骤以非root用户为例…

docker的基础配置

目录 数据卷 数据卷容器 端口映射与容器互联 互联机制实现便捷互访(基于容器搭建论坛) 数据卷 1.创建数据卷 [rootopenEuler-1 /]# docker volume create test test [rootopenEuler-1 /]# docker volume ls DRIVER VOLUME NAME local test [ro…

VSCode Import Cost:5 分钟学会依赖瘦身

一句话作用:在代码里 import 时,实时显示包大小,帮你一眼揪出体积炸弹。1️⃣ 30 秒安装 & 启动 打开 VSCode → 扩展商店搜索 Import Cost → 安装重启 VSCode,立即生效,零配置。2️⃣ 使用方式(开箱即…

TCP/UDP详解(一)

UDP报文源端口16bit 目的端口16bit校验和checksum16bit 总长度16bit--------------------------------------------------------------------------------------------------------------------------源目端口用于标识应用层协议,分为知名端口&#x…

数据库优化提速(一)之进销存库存管理—仙盟创梦IDE

从存储过程到通用 SQL:进销存系统的数据操作优化在进销存系统的开发与维护中,数据库查询语句的编写方式对系统的性能、兼容性和可维护性有着深远影响。本文将围绕给定的三段 SQL 代码展开,深入探讨将存储过程转换为通用 SQL 在进销存场景下的…

Redis面试精讲 Day 28:Redis云原生部署与Kubernetes集成

【Redis面试精讲 Day 28】Redis云原生部署与Kubernetes集成 在当今微服务与容器化浪潮中,Redis作为高性能缓存和消息中间件,已从单机部署逐步演进为云原生环境下的核心组件。Day 28 聚焦“Redis云原生部署与Kubernetes集成”,深入解析如何在…

leetcode刷题记录03——top100题里的6道简单+1道中等题

leetcode刷题记录03——top100题里的6道简单1道中等题上一篇博客: leetcode刷题记录01——top100题里的7道简单题 leetcode刷题记录02——top100题里的7道简单题 有效的括号 看懂需要用栈了,但是不知道怎么去写,看了题解mark下正确答案。 cla…

求单位球内满足边界条件 u = z³ 的调和函数

问题 6:在区域 {x2y2z2≤1}\{x^{2}y^{2}z^{2}\leq 1\}{x2y2z2≤1} 内找到一个调和函数 uuu,使得在边界 x2y2z21x^{2}y^{2}z^{2}1x2y2z21 上,uuu 等于 gz3gz^{3}gz3。 提示:根据第8.1节,解必须是一个三次调和多项式&…