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

Redis深入了解內(nèi)存淘汰與事務(wù)操作

 更新時間:2022年07月28日 09:09:12   作者:kaico2018  
將Redis用作緩存時,Redis數(shù)據(jù)存在內(nèi)存中,如果內(nèi)存空間用滿,就會自動驅(qū)逐老的數(shù)據(jù)。Redis事務(wù)是一個單獨(dú)的隔離操作:事務(wù)中的所有命令都會序列化、按順序地執(zhí)行。事務(wù)在執(zhí)行的過程中,不會被其他客戶端發(fā)送來的命令請求所打斷

Redis內(nèi)存淘汰策略

為什么要有淘汰策略?

答:將Redis用作緩存時,Redis數(shù)據(jù)存在內(nèi)存中,如果內(nèi)存空間用滿,就會自動驅(qū)逐老的數(shù)據(jù)。

redis配置文件:可以配置redis存放數(shù)據(jù)的閾值(例如:100mb),再配置淘汰策略。

六種淘汰策略

  • noeviction:當(dāng)內(nèi)存使用達(dá)到閾值的時候,所有引起申請內(nèi)存的命令會報(bào)錯。
  • allkeys-lru:在主鍵空間中,優(yōu)先移除最近未使用的key。(推薦)
  • volatile-lru:在設(shè)置了過期時間的鍵空間中,優(yōu)先移除最近未使用的key。
  • allkeys-random:在主鍵空間中,隨機(jī)移除某個key。
  • volatile-random:在設(shè)置了過期時間的鍵空間中,隨機(jī)移除某個key。
  • volatile-ttl:在設(shè)置了過期時間的鍵空間中,具有更早過期時間的key優(yōu)先移除。

如何配置淘汰策略?

在redis.conf文件中, 設(shè)置Redis 內(nèi)存大小的限制,我們可以設(shè)置maxmemory ,當(dāng)數(shù)據(jù)達(dá)到限定大小后,會選擇配置的策略淘汰數(shù)據(jù)。

比如:maxmemory 300mb。

通過配置 maxmemory-policy 設(shè)置Redis的淘汰策略。比如:maxmemory-policy volatile-lru

Redis中的自動過期機(jī)制

首先需要配置redis配置文件,開啟 key 失效監(jiān)聽。

當(dāng)key失效時,可以執(zhí)行我們的客戶端回調(diào)監(jiān)聽的方法。

需要在Redis中配置:notify-keyspace-events “Ex”

代碼在之前的基礎(chǔ)上增加:Springboot整合key失效監(jiān)聽

RedisListenerConfig 配置類

@Configuration
public class RedisListenerConfig {
    @Bean
    RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) {
        RedisMessageListenerContainer container = new RedisMessageListenerContainer();
        container.setConnectionFactory(connectionFactory);
        return container;
    }
}

監(jiān)聽 key 的類

@Component
public class RedisKeyExpirationListener extends KeyExpirationEventMessageListener {
    public RedisKeyExpirationListener(RedisMessageListenerContainer listenerContainer) {
        super(listenerContainer);
    }
    @Override
    public void onMessage(Message message, byte[] pattern) {
        String expiraKey = message.toString();
        System.out.println("失效的key:" + expiraKey);
    }
}

注意:如果是多個springboot項(xiàng)目或者多個 jvm 服務(wù)監(jiān)聽同一個key的話,每一個 jvm 都會監(jiān)聽到這個key失效并且執(zhí)行相應(yīng)的邏輯代碼。

多服務(wù)(jvm)監(jiān)聽Redis key失效通知,如何保證只有一個jvm是執(zhí)行監(jiān)聽的代碼?

答:可以使用 zookeeper 的選舉機(jī)制,多個服務(wù)注冊到zookeeper中,選舉出一個leader,由為 leader 的jvm來執(zhí)行監(jiān)聽代碼。

Redis中的事務(wù)操作

  • Multi 開啟事務(wù)
  • EXEC 提交事務(wù)
  • Watch 可以監(jiān)聽一個或者多個key,在提交事務(wù)之前是否有發(fā)生了變化 如果發(fā)生邊了變化就不會提交事務(wù),沒有發(fā)生變化才可以提交事務(wù) 版本號碼 樂觀鎖
  • Discard 取消提交事務(wù)

注意:Redis官方是沒有提供回滾方法,只提供了取消事務(wù)。

Redis中本身就是單線程的能夠保證線程安全問題,不需要考慮線程安全問題。

取消事務(wù)跟回滾有什么區(qū)別呢?為什么redis不支持回滾事務(wù)?

Mysql中開啟了事務(wù),對該行數(shù)據(jù)上行鎖—,Commit 數(shù)據(jù)可以提交

回滾:對事務(wù)取消和行鎖都會撤銷

Redis沒有回滾事務(wù)的概念,單純?nèi)∠聞?wù)(不提交事務(wù)) 不上鎖

watch和Multi的區(qū)別

Watch相當(dāng)于樂觀鎖,在事務(wù)提交之前沒有發(fā)生變化才可以提交事務(wù)。

Multi 就是開啟事務(wù),操作數(shù)據(jù)之后可以提交事務(wù)或者取消提交事務(wù)。

到此這篇關(guān)于Redis深入了解內(nèi)存淘汰與事務(wù)操作的文章就介紹到這了,更多相關(guān)Redis內(nèi)存淘汰與事務(wù)操作內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Ubuntu22.04 LTS 上安裝Redis的過程

    Ubuntu22.04 LTS 上安裝Redis的過程

    Redis是一種開源的內(nèi)存數(shù)據(jù)存儲,可以用作數(shù)據(jù)庫、緩存和消息代理等,本文將會介紹兩種不同的安裝方式,包括從源代碼編譯安裝以及通過apt包管理器安裝,需要的朋友參考下吧
    2023-11-11
  • Redis 對比 Memcached 并在 CentOS 下進(jìn)行安裝配置詳解

    Redis 對比 Memcached 并在 CentOS 下進(jìn)行安裝配置詳解

    Redis 是一個開源、支持網(wǎng)絡(luò)、基于內(nèi)存、鍵值對的 Key-Value 數(shù)據(jù)庫,本篇文章主要介紹了Redis 對比 Memcached 并在 CentOS 下進(jìn)行安裝配置詳解,有興趣的可以了解一下。
    2016-11-11
  • 手把手教你用Redis 實(shí)現(xiàn)點(diǎn)贊功能并且與數(shù)據(jù)庫同步

    手把手教你用Redis 實(shí)現(xiàn)點(diǎn)贊功能并且與數(shù)據(jù)庫同步

    本文主要介紹了Redis 實(shí)現(xiàn)點(diǎn)贊功能并且與數(shù)據(jù)庫同步,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • 如何使用Redis鎖處理并發(fā)問題詳解

    如何使用Redis鎖處理并發(fā)問題詳解

    這篇文章主要給大家介紹了關(guān)于如何使用Redis鎖處理并發(fā)問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Redis具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Redis中List實(shí)現(xiàn)雙鏈表

    Redis中List實(shí)現(xiàn)雙鏈表

    本文主要介紹了Redis中List實(shí)現(xiàn)雙鏈表,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Redisson如何解決Redis分布式鎖提前釋放問題

    Redisson如何解決Redis分布式鎖提前釋放問題

    本文主要介紹了Redisson如何解決Redis分布式鎖提前釋放問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • redis?Template.opsForValue()中方法實(shí)例詳解

    redis?Template.opsForValue()中方法實(shí)例詳解

    這篇文章主要介紹了redis?Template.opsForValue()中方法講解,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-05-05
  • Redis主從復(fù)制的原理分析

    Redis主從復(fù)制的原理分析

    Redis主從復(fù)制通過將數(shù)據(jù)鏡像到多個從節(jié)點(diǎn),實(shí)現(xiàn)高可用性和擴(kuò)展性,主從復(fù)制包括初次全量同步和增量同步兩個階段,為優(yōu)化復(fù)制性能,可以采用AOF持久化、調(diào)整復(fù)制超時時間、優(yōu)化網(wǎng)絡(luò)帶寬等措施,故障轉(zhuǎn)移機(jī)制依賴于Sentinel或Cluster組件
    2025-01-01
  • 基于Redis6.2.6版本部署Redis?Cluster集群的問題

    基于Redis6.2.6版本部署Redis?Cluster集群的問題

    這篇文章主要介紹了基于Redis6.2.6版本部署Redis?Cluster集群,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • Redis實(shí)現(xiàn)編碼生成規(guī)則方式

    Redis實(shí)現(xiàn)編碼生成規(guī)則方式

    在自動生成編碼時應(yīng)采用“MD+年月日+4位序列號”的規(guī)則,如“MD202310130001”,為避免使用隨機(jī)序列號導(dǎo)致的重復(fù)編碼,建議使用從0開始的自增序列號,此外,使用Redis的incrBy功能實(shí)現(xiàn)序列號自增,可以有效提高效率和降低實(shí)現(xiàn)難度
    2023-01-01

最新評論

永丰县| 贡觉县| 当雄县| 将乐县| 关岭| 南通市| 治多县| 西乌珠穆沁旗| 沙河市| 柘荣县| 封开县| 凯里市| 白水县| 灵武市| 衡阳县| 化州市| 彰化县| 青龙| 芷江| 汉沽区| 屯留县| 天祝| 连山| 兴义市| 遂宁市| 凯里市| 绍兴县| 达尔| 嘉兴市| 满洲里市| 东港市| 调兵山市| 新晃| 孝昌县| 江山市| 宣汉县| 古田县| 北海市| 汪清县| 临泉县| 阜阳市|