<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

聊聊Redis的使用案例

小林coding ? 來源:小林coding ? 2023-12-13 14:13 ? 次閱讀

今天我們來聊聊 Redis 的使用案例。

Redis 是一種內存鍵值數據庫。它支持多種數據結構,如 String, Hash, List, Set 和 SortedSet。

01 緩存

Redis 的最常用的用例是緩存,以加快網絡應用的速度。在這種用例中,Redis 將經常請求的數據存儲在內存中。它允許網絡服務器頻繁訪問的數據。這就減少了數據庫的負載,并縮短應用程序的響應時間。在大規模應用中,緩存分布在 Redis 服務器集群中。

Redis 作為分布式緩存時需要考慮的其他問題包括:

設置正確的 TTL (Time to Live)

處理冷啟動時對數據庫的密集訪問

02 Session 存儲

另一個常見用例是將 Redis 用作 Session 存儲,在無狀態服務之間共享 Session 數據。

當用戶登錄網絡應用程序時,服務端會創建一個唯一的 Session ID,Session 數據會存儲在 Redis 中,然后 Session 作為 Cookie 的一部分返回給客戶端。

當用戶向應用程序發出請求時,Session ID 會包含在請求中。無狀態網絡服務器會使用 Session 數據。值得注意的是 Redis 是內存數據庫。如果 Redis 服務器重啟,存儲在 Redis 中的 Session 數據會丟失。

即使 Redis 提供了 RDB 和 AOF 等持久化選項,但這些選項在重啟時加載數據的時間往往太長,不實用。在實際生產環境中,數據會復制到備份實例。如果主實例崩潰,備份迅速升級,接管流量。

03 分布式鎖

需要協調對某些共享資源的訪問時,就會使用分布式鎖。Redis 通過其原子命令(如 SETNX, SET if Not eXists)來做分布式鎖。它允許調用者設置一個不存在的鍵。

比如,客戶端通過設置一個唯一的 Key 來獲取鎖:

SETNXlock"1234abcd"EX3

如果 Key 尚未設置,SETNX 命令返回 1,表明鎖已被客戶端獲取??蛻舳送瓿晒ぷ骱?刪除 Key ,釋放鎖。

如果 Key 已被設置,SETNX 命令返回 0,表明鎖已被其他客戶機持有。在這種情況下,客戶端會等待并重試 SETNX 操作,直到鎖被其他客戶端釋放。

請注意,這種簡單的實現對于許多用例來說已經足夠好了,但并非完全容錯。對于生產應用,許多 Redis 客戶端庫提供高質量的分布式鎖實現。

04 限流

Redis 可用作限流。一個非?;镜南蘖?a target="_blank">算法是這樣工作的:

對于每個用戶請求,其請求的 IP 或用戶 ID 用作 Key。每個請求都會使鍵值遞增。將當前計數與允許的速率限制進行比較,如果計數在速率限制范圍內,則處理請求。如果計數超過速率限制,則拒絕請求。Key可以設置為在特定時間窗口(如一分鐘)后過期,以重置下一個時間窗口的計數。

05 游戲排行榜

對于大多數規模不是很大的游戲來說,Redis 是一種很好的實現方式。SortedSet 是實現這一功能的基本數據結構。

SortedSet 的每個元素都有一個與之相關的分數。元素按分數排序。這樣就可以在對數時間內 完成排序。

06 購物車

我們可以使用 Hash 來表示購物車中的鍵值對。對于簡單的電商平臺來說,在 Redis 中實現購物車可以兼顧用戶體驗和快速交付。

07 計算用戶留存率

我們可以使用 Bitmap 來表示每天登錄的用戶并計算用戶保留率。這種計數功能占用的內存很少。

08 消息隊列

我們可以使用 List 來做消息隊列。也可以使用 Redis 的 PubSub 功能來實現類似的消息總線功能。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據庫
    +關注

    關注

    7

    文章

    3628

    瀏覽量

    63689
  • 消息隊列
    +關注

    關注

    0

    文章

    31

    瀏覽量

    2937
  • Redis
    +關注

    關注

    0

    文章

    365

    瀏覽量

    10544

原文標題:面試官:Redis 除了用作緩存還能干嘛?

文章出處:【微信號:小林coding,微信公眾號:小林coding】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    如何使用Rust連接Redis

    Redis是一款快速、開源、鍵值存儲數據庫,被廣泛應用于緩存、發布/訂閱系統、定時任務等場景中。Rust提供了很多Redis的客戶端庫,本教程將會介紹如何使用Rust連接Redis,以及如何通過
    的頭像 發表于 09-19 16:22 ?1550次閱讀

    Redis Stream應用案例

    摘要: Redis Stream Redis最新的大版本5.0已經RC1了,其中最重要的Feature莫過于Redis Stream了,關于Redis Stream的基本使用介紹和設計
    發表于 06-26 17:15

    redis概述

    REmote DIctionary Server(Redis)是一個基于key-value鍵值對的持久化數據庫存儲系統。redis和大名鼎鼎的Memcached緩存服務軟件很像,但是redis支持
    發表于 07-17 07:38

    linux的redis啟動方式

    tar zxvf redis-2.8.9.tar.gzcd redis-2.8.9#直接make 編譯make#可使用root用戶執行`make install`,將可執行文件拷貝到/usr/local/bin目錄下。這樣就可以直接敲名字運行程序了。make instal
    發表于 07-17 08:03

    linux的redis安裝啟動

    1.將下載好的壓縮包放到/usr/local目錄下# tar x*** redis-3.0.2.tar.gz# cd redis-3.0.2# make提示錯誤 make: cc: Command not found make: *** [adlist.o] Error
    發表于 07-18 08:05

    Redis使用總結

    Spring+SpringMVC+MyBatis+easyUI整合進階篇(十四)Redis緩存正確的使用姿勢
    發表于 09-05 08:31

    laravel使用redis

    laravel操作redis筆記!
    發表于 09-24 09:40

    啟動Redis的三種方法

    Redis筆記(1)——安裝、卸載、三種方法啟動Redis,Redis命令使用(干貨十足),Redis兩種方法設置密碼,時間復雜度(更完善哦~)
    發表于 06-08 16:09

    如何使得redis中的數據不再有

    嵌入式Linux系統重啟后如何使得redis中的數據不再有今天在工作中遇到一個問題:網頁展示redis中的數據,然而再Linux系統重啟后網頁還能展示redis中的數據,感覺很奇怪,到網上搜了下
    發表于 11-05 08:50

    labview讀寫操作REDIS

    本帖最后由 SevenLi8408 于 2022-9-15 08:07 編輯 分享一個好用的非關系型緩存數據庫的使用方法。REDIS桌面管理軟件https://github.com
    發表于 08-15 10:32

    文盤Rust--r2d2實現redis連接池

    我們在開發應用后端系統的時候經常要和各種數據庫、緩存等資源打交道。這一期,我們聊聊如何訪問redis 并將資源池化。
    的頭像 發表于 12-12 10:32 ?498次閱讀

    什么是 Redis

    ? — ? 1 ?— 什么是 Redis? Redis(REmote DIctionary Service)是一個開源的鍵值對數據庫服務器。 Redis 更準確的描述是一個數據結構服務器。Re
    的頭像 發表于 05-22 15:32 ?749次閱讀
    什么是 <b class='flag-5'>Redis</b>

    Redis的主從、哨兵、Redis Cluster集群

    ? 前言 今天跟小伙伴們一起學習Redis的主從、哨兵、Redis Cluster集群。 Redis主從 Redis哨兵 Redis Clu
    的頭像 發表于 06-12 14:58 ?559次閱讀
    <b class='flag-5'>Redis</b>的主從、哨兵、<b class='flag-5'>Redis</b> Cluster集群

    如何用Springboot整合Redis

    本篇文件我們來介紹如何用Springboot整合Redis。 1、Docker 安裝 Redis 1.1 下載鏡像 docker pull redis: 6 . 2 . 6 1.2 創建配置文件
    的頭像 發表于 10-08 14:56 ?382次閱讀
    如何用Springboot整合<b class='flag-5'>Redis</b>

    redis容器內怎么查看redis日志

    redis是一款流行的開源內存數據庫,常用于緩存、消息隊列、任務管理等場景。在使用redis時,了解如何查看redis日志對于排查問題、監控性能和分析應用程序行為非常重要。在本文中,我們將介紹
    的頭像 發表于 12-05 10:10 ?1747次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>