Redis(以Django为例,含具体操作步骤)
简介
Redis(Remote Dictionary Server)是一个开源的内存数据结构存储系统,支持多种数据结构(如字符串、哈希、列表、集合、有序集合等),可用作数据库、缓存或消息队列。其核心特点包括:
- 高性能:数据存储在内存中,读写速度极快。
- 持久化:支持快照(RDB)和日志(AOF)两种持久化方式。
- 分布式:支持主从复制、哨兵模式和集群模式。
- 多语言支持:提供多种编程语言的客户端库。
开发应用场景
- 缓存:加速热点数据访问,减轻数据库压力。
- 会话存储:存储用户会话信息,支持分布式系统。
- 消息队列:通过
LPUSH
/BRPOP
实现简单的消息队列。 - 排行榜:利用有序集合(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)