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

SpringBoot使用Redis實(shí)現(xiàn)分布式緩存

 更新時(shí)間:2023年04月03日 14:05:58   作者:Java Fans  
這篇文章主要介紹了SpringBoot redis分布式緩存實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼解析的非常詳細(xì),感興趣的同學(xué)可以參考閱讀

springboot使用Redis實(shí)現(xiàn)分布式緩存

1、環(huán)境構(gòu)建

1.1 通過(guò)MybatisX工具逆向功能快速初始化一個(gè)工程(springboot+mybatis-plus)

1.2 構(gòu)建controller層測(cè)試各模塊的功能

1.3 相同的請(qǐng)求沒(méi)有實(shí)現(xiàn)共享數(shù)據(jù),需要開(kāi)啟mybatis的二級(jí)緩存

1.4 springboot環(huán)境下開(kāi)啟mybatis-plus的二級(jí)緩存

1.5編寫(xiě)獲取spring工廠的工具類

@Component
public class ApplicationContextUtils implements ApplicationContextAware {

    private  static ApplicationContext applicationContext;
    
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.applicationContext = applicationContext;
    }
    public static Object getBean(String beanName){
        return applicationContext.getBean(beanName);
    }
}

1.6編寫(xiě)Redis緩存類

@Slf4j
public class RedisCache  implements Cache {

    private final String id;

    public RedisCache(String id){
        this.id = id;
    }

    // 操作模塊的mapper文件的命名空間 唯一標(biāo)識(shí)符
    @Override
    public String getId() {
        log.info("id= {}",id);
        return this.id;
    }

    // 將數(shù)據(jù)寫(xiě)入redis
    @Override
    public void putObject(Object key, Object value) {

        log.info("===============將查詢的數(shù)據(jù)開(kāi)始寫(xiě)入緩存===============");
        RedisTemplate redisTemplate = getRedisTemplate();
        redisTemplate.opsForHash().put(id, key.toString(), value);

        log.info("===============將查詢的數(shù)據(jù)寫(xiě)入緩存完畢===============");

    }

    // 獲取緩存中的數(shù)據(jù)
    @Override
    public Object getObject(Object key) {
        log.info("============開(kāi)始從緩存中獲取數(shù)據(jù)=============");
        RedisTemplate redisTemplate = getRedisTemplate();
        log.info("============從緩存中獲取數(shù)據(jù)完畢=============");
        return redisTemplate.opsForHash().get(id, key.toString());
    }

    // 移除緩存中的數(shù)據(jù)
    @Override
    public Object removeObject(Object key) {
        return null;
    }

    // 清空緩存
    @Override
    public void clear() {
        log.info("==========清空緩存=============");
        RedisTemplate redisTemplate = getRedisTemplate();
        redisTemplate.delete(id);
    }

    // 獲取緩存的數(shù)量
    @Override
    public int getSize() {
        RedisTemplate redisTemplate = (RedisTemplate) 			ApplicationContextUtils.getBean("redisTemplate");
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setHashKeySerializer(new StringRedisSerializer());
        int size = redisTemplate.opsForHash().size(id).intValue();
        return size;
    }


    private RedisTemplate getRedisTemplate(){
        RedisTemplate redisTemplate = (RedisTemplate) ApplicationContextUtils.getBean("redisTemplate");
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setHashKeySerializer(new StringRedisSerializer());
        return redisTemplate;
    }

}

1.7Redis中有關(guān)聯(lián)關(guān)系緩存數(shù)據(jù)的處理

@CacheNamespaceRef(DeptMapper.class)  // 引用有關(guān)聯(lián)關(guān)系的命名空間
public interface EmpMapper extends BaseMapper<Emp> {

}
注:以上設(shè)置完成后,兩個(gè)模塊會(huì)使用相同的key(命名空間)存儲(chǔ)數(shù)據(jù)到緩存中  

1.8 Redis中key進(jìn)行摘要算法

DigestUtils.md5DigestAsHex(key.toString().getBytes()) // 通過(guò)該操作可以減少key的長(zhǎng)度

Redis實(shí)現(xiàn)主從復(fù)制

1.準(zhǔn)備三臺(tái)已經(jīng)安裝Redis的虛擬機(jī)

???????2.查看三臺(tái)虛擬機(jī)的ip地址

3.通過(guò)遠(yuǎn)程連接工具FinalShell連接

4.修改從節(jié)點(diǎn)配置文件

啟動(dòng)三臺(tái)服務(wù)器上的redis后,輸入一下命令查看redis主從配置狀態(tài)

info replication

修改從節(jié)點(diǎn)服務(wù)器的配置文件redis.conf

replicaof  主機(jī)ip 主機(jī)redis接口
masterauth 密碼

修改后重啟兩個(gè)從機(jī),在主機(jī)和從機(jī)分別輸入一下命令查看如下:

info replication

驗(yàn)證主從架構(gòu)

至此主從架構(gòu)設(shè)置完成

Redis集群的構(gòu)建

以上結(jié)構(gòu)的集群構(gòu)建可以在一臺(tái)虛擬機(jī)環(huán)境中進(jìn)行模擬,首先創(chuàng)建一臺(tái)已經(jīng)安裝好Redis數(shù)據(jù)庫(kù)的虛擬機(jī)

開(kāi)啟虛擬機(jī)并在虛擬機(jī)的根路徑下創(chuàng)建好7000,7001,7002,7003,7004,7005六個(gè)文件夾,之后將redis解壓目錄下的redis.conf配置文件拷貝到以上幾個(gè)文件夾中,同時(shí)按照以下參數(shù)完成配置文件的修改

修改配置文件中的參數(shù)

以上6個(gè)文件夾中文件全部修改完畢之后,可以按照以下指令啟動(dòng)全部的redis節(jié)點(diǎn)

查看redis服務(wù)是否已經(jīng)全部啟動(dòng)成功

ps aux|grep  redis

全部啟動(dòng)成功之后,執(zhí)行以下指令,將多個(gè)節(jié)點(diǎn)組合成集群,同時(shí)實(shí)現(xiàn)主從備份

確認(rèn)集群的主從從節(jié)點(diǎn)信息

輸入yes,確認(rèn)主從節(jié)點(diǎn)信息后,輸出以下信息,表示集群構(gòu)建成功

使用一下指令登錄集群中的任意節(jié)點(diǎn)實(shí)現(xiàn)數(shù)據(jù)的操作,查看集群是否可正常工作

./redis-cli -a cyclone -c -h 192.168.220.11 -p 7001   連接

-a 表示連接密碼  沒(méi)有可省略
-c 表示集群方式進(jìn)行啟動(dòng)
-h ip 地址
-p 表示端口號(hào)

如果在springboot項(xiàng)目中連接Redis集群可按照一下方式進(jìn)行配置

redis:
    cluster: 
       nodes: 192.168.1.1:6379 ,.....

以上就是SpringBoot使用Redis實(shí)現(xiàn)分布式緩存的詳細(xì)內(nèi)容,更多關(guān)于Springboot Redis分布式緩存的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論

五家渠市| 远安县| 广南县| 二手房| 闻喜县| 宽城| 庆元县| 当雄县| 沈丘县| 泊头市| 铜陵市| 东至县| 淄博市| 应城市| 涟源市| 嘉鱼县| 武城县| 鹤壁市| 秦安县| 定西市| 九江县| 岑巩县| 凯里市| 龙川县| 富裕县| 青海省| 华蓥市| 海南省| 义马市| 闻喜县| 邹平县| 咸阳市| 镇赉县| 临邑县| 抚顺市| 海城市| 枣庄市| 潢川县| 娄底市| 祁阳县| 独山县|