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)

相关推荐
l1t4 小时前
DeepSeek总结的 pg_regresql插件:真正可移植的 PostgreSQL 统计信息
数据库·postgresql
oradh4 小时前
Oracle 11.2.0.1版本升级至11.2.0.4_单机环境
数据库·oracle·oracle11g·oracle升级
l1t4 小时前
用docker安装测试crate数据库
数据库·docker·容器·cratedb
anzhxu4 小时前
QT数据库(三):QSqlQuery使用
数据库·qt·oracle
身如柳絮随风扬4 小时前
MySQL核心知识
数据库·mysql
德彪稳坐倒骑驴4 小时前
Oracle 11g安装
数据库·oracle
韩立学长4 小时前
Springboot校园跑腿业务系统0b7amk02(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·后端
阿贵---5 小时前
使用XGBoost赢得Kaggle比赛
jvm·数据库·python
想七想八不如114085 小时前
数据库--样题复习
数据库·sql·oracle
551只玄猫5 小时前
【数据库原理 实验报告1】创建和管理数据库
数据库·sql·学习·mysql·课程设计·实验报告·数据库原理