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的相關代碼

# 在視圖、模型或管理腳本中使用
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)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/94262.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/94262.shtml
英文地址,請注明出處:http://en.pswp.cn/web/94262.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

瀏覽器解析網址的過程

問題瀏覽器解析網址的過程我的回答當你在瀏覽器地址欄輸入一個URL(比如www.example.com)并按下回車后,會發生以下一系列步驟:首先,瀏覽器會解析URL結構,確定要訪問的協議、域名和路徑。如果你沒有輸入協議部…

NVIDIA Nsight Systems性能分析工具

* 性能分析 NVIDIA Nsight Systems (推薦): 這是 NVIDIA 官方推薦的更現代、功能更強大的分析工具。 安裝 Nsight Systems在 Docker 容器中啟動程序:# 確保你在啟動容器時掛載了/usr/local/cuda/targets/x86_64-linux/lib/ 和 /usr/local/nvidia/lib64 #…

后臺管理系統-14-vue3之tag標簽頁的實現

文章目錄 1 tag靜態實現 1.1 CommonTag.vue(el-tag) 1.2 Main.vue(普通組件標簽) 2 tag通過pinia管理 2.1 CommonAside.vue(菜單點擊事件) 2.2 stores/index.js(selectMenu()和tags) 2.3 CommonTag.vue(計算屬性tags) 3 點擊tag之后跳轉到指定頁面 3.1 views/Mail.vue(商品) 3.…

CMake2: CMakeLists.txt的常用命令

參考鏈接: 愛編程的大丙 | CMake教程 CMakeLists指令以及常用方法 現代 CMake 教程 文章目錄1. cmake_minimum_required( )2. project( )3. add_executable( )4. set()5. aux_source_directory( )6. file( )7. include_directories( )8. add_library( )9. link_libraries()與li…

Ansible入門:自動化運維基礎

Ansible 基礎概念與安裝1. 自動化動機 (Motivation for Automation)概念解釋: 指為什么要用Ansible等工具來替代手動管理服務器。核心動機包括:效率與速度: 同時在上百甚至上千臺服務器上執行任務,秒級完成,遠非人工可…

【測試】基于博客系統的測試報告

前言 本篇博客對簡易的博客系統做的測試總結一份測試報告,包含功能測試,自動化測試,性能測試 💓 個人主頁:zkf ? 文章專欄:測試 若有問題 評論區見📝 🎉歡迎大家點贊👍…

Oracle:配置讓插入語句時id自動輸入

Oracle:配置讓插入語句時id自動輸入無需手動指定,核心是利用 序列(Sequence) 或 自增列(Identity Column) 來自動生成唯一值。以下是兩種常用方案:方案 1:使用序列(Sequence&#xf…

秒殺服務的回調方案

在秒殺場景中,用戶點擊“搶購”后,后端需要通過異步處理應對高并發(避免請求阻塞),同時需通過實時回調機制將最終結果(成功/失敗)推送給客戶端并展示。核心方案是:“前端發起請求→后…

php apache無法接收到Authorization header

Apache 默認不傳遞 Authorization頭到后端環境(如 PHP)。其表現是:print_r($_SERVER)時, 沒有 [Authorization] :Array ([Accept-Language] > zh,en;q0.9,zh-CN;q0.8,en-US;q0.7[Accept-Encoding] > gzip, defla…

當我們想用GPU(nlp模型篇)

在個人設備上“把 GPU 真正用起來”做 NLP,分五步:準備 → 安裝 → 驗證 → 訓練/推理 → 踩坑排查。下面每一步都給出可復制命令和常見錯誤。 ────────────────── 1. 硬件準備 ? 一張 NVIDIA GPU,算力 ≥ 6.1&#xff08…

CryptSIPVerifyIndirectData函數分析

可以使用此函數從SIP接口對應的文件中提取簽名信息 CryptSIPVerifyIndirectData:將當前文件的哈希結果做為“指紋”,并與從CryptSIPGetSignedDataMsg中提取的簽名信息進行比較。 如果哈希結果相同,則意味著當前文件與之前簽名的文件相同&…

20250823解決榮品RD-RK3588-MID開發板在充電的時候大概每10s屏幕會像水波紋閃爍一下

20250823解決榮品RD-RK3588-MID開發板在充電的時候大概每10s屏幕會像水波紋閃爍一下 2025/8/23 17:58【結論】:使用直流電源供電,給電池【快速】充電,但是直流電源的電壓穩定,電流抖動導致的!那個是2.4G 已經知道了我司…

CANN安裝

前提條件 請參考本文檔正確安裝和使用CANN軟件,不建議將CANN安裝在共享磁盤后,通過掛載的方式使用CANN,因為CANN對文件系統有文件鎖的依賴,部分共享存儲不支持文件鎖,可能導致任務拉起失敗。 root用戶和非root用戶安裝CANN軟件包的步驟一致,當前示例步驟以非root用戶為例…

docker的基礎配置

目錄 數據卷 數據卷容器 端口映射與容器互聯 互聯機制實現便捷互訪(基于容器搭建論壇) 數據卷 1.創建數據卷 [rootopenEuler-1 /]# docker volume create test test [rootopenEuler-1 /]# docker volume ls DRIVER VOLUME NAME local test [ro…

VSCode Import Cost:5 分鐘學會依賴瘦身

一句話作用:在代碼里 import 時,實時顯示包大小,幫你一眼揪出體積炸彈。1?? 30 秒安裝 & 啟動 打開 VSCode → 擴展商店搜索 Import Cost → 安裝重啟 VSCode,立即生效,零配置。2?? 使用方式(開箱即…

TCP/UDP詳解(一)

UDP報文源端口16bit 目的端口16bit校驗和checksum16bit 總長度16bit--------------------------------------------------------------------------------------------------------------------------源目端口用于標識應用層協議,分為知名端口&#x…

數據庫優化提速(一)之進銷存庫存管理—仙盟創夢IDE

從存儲過程到通用 SQL:進銷存系統的數據操作優化在進銷存系統的開發與維護中,數據庫查詢語句的編寫方式對系統的性能、兼容性和可維護性有著深遠影響。本文將圍繞給定的三段 SQL 代碼展開,深入探討將存儲過程轉換為通用 SQL 在進銷存場景下的…

Redis面試精講 Day 28:Redis云原生部署與Kubernetes集成

【Redis面試精講 Day 28】Redis云原生部署與Kubernetes集成 在當今微服務與容器化浪潮中,Redis作為高性能緩存和消息中間件,已從單機部署逐步演進為云原生環境下的核心組件。Day 28 聚焦“Redis云原生部署與Kubernetes集成”,深入解析如何在…

leetcode刷題記錄03——top100題里的6道簡單+1道中等題

leetcode刷題記錄03——top100題里的6道簡單1道中等題上一篇博客: leetcode刷題記錄01——top100題里的7道簡單題 leetcode刷題記錄02——top100題里的7道簡單題 有效的括號 看懂需要用棧了,但是不知道怎么去寫,看了題解mark下正確答案。 cla…

求單位球內滿足邊界條件 u = z3 的調和函數

問題 6:在區域 {x2y2z2≤1}\{x^{2}y^{2}z^{2}\leq 1\}{x2y2z2≤1} 內找到一個調和函數 uuu,使得在邊界 x2y2z21x^{2}y^{2}z^{2}1x2y2z21 上,uuu 等于 gz3gz^{3}gz3。 提示:根據第8.1節,解必須是一個三次調和多項式&…