最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在項(xiàng)目中使用redis做緩存的一些思路

 更新時(shí)間:2021年09月13日 09:57:15   作者:麥田小豬  
這篇文章主要介紹了在項(xiàng)目中使用redis做緩存的一些思路,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

在項(xiàng)目中redis做緩存的一些思路

首先,緩存的對(duì)象有三種

1、數(shù)據(jù)庫中單條的的數(shù)據(jù)(以表名跟id作為key永久保存到redis),在有更新的地方都要更新緩存(不適用于需要經(jīng)常更新的數(shù)據(jù));

2、對(duì)于一些不分頁,不需要實(shí)時(shí)(需要多表查詢)的列表,我們可以將列表結(jié)果緩存到redis中,設(shè)定一定緩存時(shí)間作為該數(shù)據(jù)的存活時(shí)間。用獲取該列表的方法名作為key,列表結(jié)果為value;這種情況只試用于不經(jīng)常更新且不需要實(shí)時(shí)的情況下。

3、不需要實(shí)時(shí)的,需要分頁的列表:可以把分頁的結(jié)果列表放到一個(gè)map(key為分頁標(biāo)識(shí),value為分頁結(jié)果)中,然后將該map存到redis的list中(用該方法名為key)。然后給該list設(shè)置一個(gè)緩存存活時(shí)間(用expire)。這樣通過方法名lrange出來就能獲取存有分頁列表的數(shù)據(jù),遍歷該list,通過遍歷list中map的key判斷該分頁數(shù)據(jù)是否在緩存內(nèi),是則返回,不存在則rpush進(jìn)去。這種做法能解決比如1-5頁的數(shù)據(jù)已經(jīng)重新加載,而6-10頁的數(shù)據(jù)依然是緩存的數(shù)據(jù)而導(dǎo)致臟數(shù)據(jù)的情況。

本人走過的一些彎路

1、對(duì)于數(shù)據(jù)緩存不是所有東西都緩存到redis就是好的,而是要針對(duì)一些改動(dòng)不大或者訪問率大的數(shù)據(jù)進(jìn)行緩存來減少關(guān)系型數(shù)據(jù)庫的壓力。

2、不要試圖在攔截器或者過濾器中判斷是否有緩存的存在,因?yàn)槊總€(gè)請(qǐng)求(不管該請(qǐng)求對(duì)應(yīng)的方法是否做了緩存)它都會(huì)去redis中請(qǐng)求數(shù)據(jù)并判斷,這樣會(huì)浪費(fèi)一定的內(nèi)存資源跟響應(yīng)時(shí)間。所以應(yīng)該針對(duì)需要緩存的方法進(jìn)行判斷。

3、一個(gè)方法中使用多個(gè)get或者set的方法,我們需要盡可能的減少去jedispool中獲取jedis對(duì)象,所以在一個(gè)方法中應(yīng)該只獲取一次jedis對(duì)象,在方法結(jié)束的時(shí)候把該對(duì)象return還給連接池,這樣才能做到盡可能的高效。

4、在設(shè)置連接池中參數(shù)的時(shí)候要考慮到自身系統(tǒng)需求,不然會(huì)經(jīng)常出現(xiàn)連接池中無可用對(duì)象獲取,spring時(shí)不時(shí)發(fā)起連接請(qǐng)求到redis等不必要的錯(cuò)誤和資源浪費(fèi)。

為什么沒用Redis做緩存

都知道用Redis作緩存非常的快,但事實(shí)上有些時(shí)候我們并沒有使用Redis來做緩存,而是采用本地緩存的方式。就比如我所接觸的一個(gè)項(xiàng)目,就沒有采用Redis作緩存,而是使用谷歌工具包中的Table來作的緩存。

這個(gè)Table其實(shí)就是一個(gè)數(shù)據(jù)結(jié)構(gòu),你可以把它當(dāng)做Map來看待?,F(xiàn)在我們來畫兩幅圖,分別是使用Table做緩存和使用Redid做緩存的兩種情況

使用Table作本地緩存

本地緩存

使用Redis作緩存

在這里插入圖片描述

公司采用本地緩存的方式,那么為什么沒有采用Redis呢

讓我們來思考一下下面幾個(gè)問題

1、訪問本地服務(wù)緩存快還是遠(yuǎn)程服務(wù)Redis快?

毫無疑問是訪問本地服務(wù)的緩存要更快一些,Redis畢竟是在遠(yuǎn)程服務(wù)上。假設(shè)我們?cè)L問本地服務(wù)緩存的延遲為50ms,那么訪問遠(yuǎn)程Redis的驗(yàn)證可能會(huì)達(dá)到58ms。這是使用本地緩存服務(wù)的優(yōu)勢(shì)所在

2、Reids事務(wù)

在Redis中,雖然Redis的操作都能夠保證原子性,但是Redis中的事務(wù)不能夠保證原子性。比如說A用戶想B用戶轉(zhuǎn)賬,怎么保證它的事務(wù)呢

3、Redis會(huì)多一次IO

盡管Redis數(shù)據(jù)存放在內(nèi)存上,但Redis持久化操作還是會(huì)將數(shù)據(jù)寫在磁盤上,IO操作會(huì)增加耗時(shí)。而本地緩存使用的只是一個(gè)數(shù)據(jù)結(jié)構(gòu)來存儲(chǔ)數(shù)據(jù),不存在IO

那么使用本地緩存的問題是什么呢?

比如說A用戶的數(shù)據(jù)存放在exchange1節(jié)點(diǎn)上,而B用戶的數(shù)據(jù)存放在exchange2節(jié)點(diǎn)上。現(xiàn)在A用戶想向B用戶轉(zhuǎn)賬,那么就會(huì)比較麻煩,要做一些其他的操作,這是使用本地緩存的一個(gè)很大的弊端

什么時(shí)候使用Redis?

由于公司的項(xiàng)目是一個(gè)證券交易所,對(duì)延遲的要求比較高,想盡可能的做到低延遲,所以最終舍棄使用Redis。對(duì)于一些不太注重延遲的項(xiàng)目,使用Redis做緩存是非常不錯(cuò)的

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Redis常用的數(shù)據(jù)結(jié)構(gòu)及實(shí)際應(yīng)用場(chǎng)景

    Redis常用的數(shù)據(jù)結(jié)構(gòu)及實(shí)際應(yīng)用場(chǎng)景

    本文介紹了Redis中常用的數(shù)據(jù)結(jié)構(gòu),包括字符串、列表、集合、哈希表、有序集合和Bitmap,并詳細(xì)說明了它們?cè)诟鞣N場(chǎng)景下的使用,需要的朋友可以參考下
    2024-05-05
  • redis秒殺系統(tǒng)的實(shí)現(xiàn)

    redis秒殺系統(tǒng)的實(shí)現(xiàn)

    秒殺在很多活動(dòng)大促中都可以用到,本文主要介紹了redis秒殺系統(tǒng)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • Redis分布式鎖升級(jí)版RedLock及SpringBoot實(shí)現(xiàn)方法

    Redis分布式鎖升級(jí)版RedLock及SpringBoot實(shí)現(xiàn)方法

    這篇文章主要介紹了Redis分布式鎖升級(jí)版RedLock及SpringBoot實(shí)現(xiàn),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • Redis集群的實(shí)現(xiàn)全過程

    Redis集群的實(shí)現(xiàn)全過程

    Redis集群的實(shí)現(xiàn)方案主要有客戶端分片、代理模式和Cluster模式,其中,Cluster模式是Redis官方推薦的實(shí)現(xiàn)方案,它具有高可用性、高性能和自動(dòng)分片等優(yōu)點(diǎn)
    2024-12-12
  • redis中zSet實(shí)現(xiàn)排行榜的使用示例

    redis中zSet實(shí)現(xiàn)排行榜的使用示例

    在工作中,有時(shí)候需要實(shí)現(xiàn)排行榜功能,本文主要介紹了redis中zSet實(shí)現(xiàn)排行榜的使用示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-10-10
  • redis通過位圖法記錄在線用戶的狀態(tài)詳解

    redis通過位圖法記錄在線用戶的狀態(tài)詳解

    這篇文章主要給大家介紹了關(guān)于redis如何通過位圖法記錄在線用戶的狀態(tài)的相關(guān)資料,文中先對(duì)位圖進(jìn)行了一個(gè)簡(jiǎn)單的介紹,而后通過示例代碼將實(shí)現(xiàn)的方法介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • Redis之如何實(shí)現(xiàn)用戶關(guān)注

    Redis之如何實(shí)現(xiàn)用戶關(guān)注

    這篇文章主要介紹了Redis之如何實(shí)現(xiàn)用戶關(guān)注問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • Redis中的數(shù)據(jù)過期策略詳解

    Redis中的數(shù)據(jù)過期策略詳解

    這篇文章主要介紹了Redis中的數(shù)據(jù)過期策略,文中通過示例代碼介紹的很詳細(xì),相信對(duì)大家的理解和學(xué)習(xí)具有一定的參考借鑒價(jià)值,有需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-01-01
  • Redis消息隊(duì)列實(shí)現(xiàn)秒殺教程

    Redis消息隊(duì)列實(shí)現(xiàn)秒殺教程

    這篇文章主要介紹了Redis消息隊(duì)列實(shí)現(xiàn)秒殺教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • Spring boot+redis實(shí)現(xiàn)消息發(fā)布與訂閱的代碼

    Spring boot+redis實(shí)現(xiàn)消息發(fā)布與訂閱的代碼

    這篇文章主要介紹了Spring boot+redis實(shí)現(xiàn)消息發(fā)布與訂閱,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值需要的朋友可以參考下
    2020-04-04

最新評(píng)論

三穗县| 张家港市| 全南县| 宽城| 宜阳县| 临夏市| 古交市| 蒙阴县| 上思县| 孝感市| 确山县| 安康市| 丰顺县| 巴楚县| 永登县| 那曲县| 楚雄市| 红原县| 长葛市| 肥西县| 营口市| 沧州市| 阿城市| 富锦市| 凤山市| 长武县| 巫山县| 依安县| 蒲城县| 绩溪县| 阿克陶县| 南宁市| 朝阳市| 旬邑县| 三明市| 两当县| 抚远县| 柞水县| 天长市| 察隅县| 盱眙县|