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的相关代码

python 复制代码
# 在视图、模型或管理脚本中使用
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)

相关推荐
树谷-胡老师19 小时前
公元前3400年至公元2024年全球国家地理边界演变数据集
数据库·arcgis·信息可视化
疯狂的Alex19 小时前
2010-2022 同等学力申硕国考:软件工程简答题真题汇总
数据库·oracle·软件工程
m0_7484613919 小时前
Spring Boot + Vue 项目中使用 Redis 分布式锁案例
vue.js·spring boot·redis
Qlittleboy19 小时前
tp5的tbmember表闭包查询 openid=‘abc‘ 并且(wx_unionid=null或者wx_unionid=‘‘)
数据库·sql·php
躲在云朵里`19 小时前
Spring Scheduler定时任务实战:从零掌握任务调度
java·数据库·mybatis
小白不想白a19 小时前
【MySQL】常用SQL语句
数据库·sql·mysql
RestCloud20 小时前
从MySQL到StarRocks:全量与增量同步的最佳实践
数据库·mysql·api
Databend20 小时前
Databend 八月月报:向量检索重磅上线,性能飞跃几十倍
数据库
路弥行至20 小时前
从0°到180°,STM32玩转MG996R舵机
c语言·数据库·stm32·单片机·嵌入式硬件·mcu·mongodb
软测进阶21 小时前
【超详细图文教程】2025年最新Win10 系统安装 MySQL 教程
数据库·mysql