一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

聊聊Redis的使用案例

小林coding ? 來源:小林coding ? 2023-12-13 14:13 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

Redis 是一種內(nèi)存鍵值數(shù)據(jù)庫。它支持多種數(shù)據(jù)結(jié)構(gòu),如 String, Hash, List, Set 和 SortedSet。

01 緩存

Redis 的最常用的用例是緩存,以加快網(wǎng)絡(luò)應(yīng)用的速度。在這種用例中,Redis 將經(jīng)常請求的數(shù)據(jù)存儲在內(nèi)存中。它允許網(wǎng)絡(luò)服務(wù)器頻繁訪問的數(shù)據(jù)。這就減少了數(shù)據(jù)庫的負(fù)載,并縮短應(yīng)用程序的響應(yīng)時間。在大規(guī)模應(yīng)用中,緩存分布在 Redis 服務(wù)器集群中。

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

設(shè)置正確的 TTL (Time to Live)

處理冷啟動時對數(shù)據(jù)庫的密集訪問

02 Session 存儲

另一個常見用例是將 Redis 用作 Session 存儲,在無狀態(tài)服務(wù)之間共享 Session 數(shù)據(jù)。

當(dāng)用戶登錄網(wǎng)絡(luò)應(yīng)用程序時,服務(wù)端會創(chuàng)建一個唯一的 Session ID,Session 數(shù)據(jù)會存儲在 Redis 中,然后 Session 作為 Cookie 的一部分返回給客戶端。

當(dāng)用戶向應(yīng)用程序發(fā)出請求時,Session ID 會包含在請求中。無狀態(tài)網(wǎng)絡(luò)服務(wù)器會使用 Session 數(shù)據(jù)。值得注意的是 Redis 是內(nèi)存數(shù)據(jù)庫。如果 Redis 服務(wù)器重啟,存儲在 Redis 中的 Session 數(shù)據(jù)會丟失。

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

03 分布式鎖

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

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

SETNXlock"1234abcd"EX3

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

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

請注意,這種簡單的實(shí)現(xiàn)對于許多用例來說已經(jīng)足夠好了,但并非完全容錯。對于生產(chǎn)應(yīng)用,許多 Redis 客戶端庫提供高質(zhì)量的分布式鎖實(shí)現(xiàn)。

04 限流

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

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

05 游戲排行榜

對于大多數(shù)規(guī)模不是很大的游戲來說,Redis 是一種很好的實(shí)現(xiàn)方式。SortedSet 是實(shí)現(xiàn)這一功能的基本數(shù)據(jù)結(jié)構(gòu)。

SortedSet 的每個元素都有一個與之相關(guān)的分?jǐn)?shù)。元素按分?jǐn)?shù)排序。這樣就可以在對數(shù)時間內(nèi) 完成排序。

06 購物車

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

07 計算用戶留存率

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

08 消息隊列

我們可以使用 List 來做消息隊列。也可以使用 Redis 的 PubSub 功能來實(shí)現(xiàn)類似的消息總線功能。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)據(jù)庫
    +關(guān)注

    關(guān)注

    7

    文章

    3929

    瀏覽量

    66303
  • 消息隊列
    +關(guān)注

    關(guān)注

    0

    文章

    34

    瀏覽量

    3136
  • Redis
    +關(guān)注

    關(guān)注

    0

    文章

    387

    瀏覽量

    11456

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    如何使用Rust連接Redis

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

    Redis Stream應(yīng)用案例

    摘要: Redis Stream Redis最新的大版本5.0已經(jīng)RC1了,其中最重要的Feature莫過于Redis Stream了,關(guān)于Redis Stream的基本使用介紹和設(shè)計
    發(fā)表于 06-26 17:15

    redis概述

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

    Redis使用總結(jié)

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

    laravel使用redis

    laravel操作redis筆記!
    發(fā)表于 09-24 09:40

    啟動Redis的三種方法

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

    如何使得redis中的數(shù)據(jù)不再有

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

    labview讀寫操作REDIS

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

    什么是 Redis

    ? — ? 1 ?— 什么是 Redis? Redis(REmote DIctionary Service)是一個開源的鍵值對數(shù)據(jù)庫服務(wù)器。 Redis 更準(zhǔn)確的描述是一個數(shù)據(jù)結(jié)構(gòu)服務(wù)器。Re
    的頭像 發(fā)表于 05-22 15:32 ?1423次閱讀
    什么是 <b class='flag-5'>Redis</b>

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

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

    Redis 的數(shù)據(jù)清理策略

    本文整理 Redis 的數(shù)據(jù)清理策略所有代碼來自 Redis version :5.0, 不同版本的 Redis 策略可能有調(diào)整
    發(fā)表于 09-19 14:24 ?600次閱讀
    <b class='flag-5'>Redis</b> 的數(shù)據(jù)清理策略

    如何用Springboot整合Redis

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

    Java redis鎖怎么實(shí)現(xiàn)

    在Java中實(shí)現(xiàn)Redis鎖涉及到以下幾個方面:Redis的安裝配置、Redis連接池的使用、Redis數(shù)據(jù)結(jié)構(gòu)的選擇、實(shí)現(xiàn)分布式鎖的幾種方式等。 一、
    的頭像 發(fā)表于 12-04 10:47 ?1482次閱讀

    redis容器內(nèi)怎么查看redis日志

    redis是一款流行的開源內(nèi)存數(shù)據(jù)庫,常用于緩存、消息隊列、任務(wù)管理等場景。在使用redis時,了解如何查看redis日志對于排查問題、監(jiān)控性能和分析應(yīng)用程序行為非常重要。在本文中,我們將介紹在
    的頭像 發(fā)表于 12-05 10:10 ?4780次閱讀

    Redis開源版與Redis企業(yè)版,怎么選用?

    點(diǎn)擊“藍(lán)字”關(guān)注我們數(shù)以千計的企業(yè)和數(shù)以百萬計的開發(fā)人員Redis開源版來構(gòu)建應(yīng)用程序。但隨著用戶數(shù)量、數(shù)據(jù)量和地區(qū)性的增加,成本、可擴(kuò)展性、運(yùn)營和可用性等問題也隨之而來。Redis企業(yè)版
    的頭像 發(fā)表于 04-04 08:04 ?1584次閱讀
    <b class='flag-5'>Redis</b>開源版與<b class='flag-5'>Redis</b>企業(yè)版,怎么選用?