簡介
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)