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)

相关推荐
NineData1 小时前
NineData 迁移评估功能正式上线
数据库·dba
雨中飘荡的记忆6 小时前
大流量下库存扣减的数据库瓶颈:Redis分片缓存解决方案
java·redis·后端
NineData7 小时前
数据库迁移总踩坑?用 NineData 迁移评估,提前识别所有兼容性风险
数据库·程序员·云计算
赵渝强老师9 小时前
【赵渝强老师】PostgreSQL中表的碎片
数据库·postgresql
全栈老石13 小时前
拆解低代码引擎核心:元数据驱动的"万能表"架构
数据库·低代码
曲幽15 小时前
FastAPI分布式系统实战:拆解分布式系统中常见问题及解决方案
redis·python·fastapi·web·httpx·lock·asyncio
倔强的石头_1 天前
kingbase备份与恢复实战(二)—— sys_dump库级逻辑备份与恢复(Windows详细步骤)
数据库
jiayou643 天前
KingbaseES 实战:深度解析数据库对象访问权限管理
数据库
李广坤3 天前
MySQL 大表字段变更实践(改名 + 改类型 + 改长度)
数据库
爱可生开源社区4 天前
2026 年,优秀的 DBA 需要具备哪些素质?
数据库·人工智能·dba