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

Springboot整合Redis與數(shù)據(jù)持久化

 更新時(shí)間:2022年07月28日 09:27:40   作者:kaico2018  
這篇文章主要介紹了Springboot整合Redis與Redis數(shù)據(jù)持久化的操作,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

Springboot整合Redis

有兩種存儲(chǔ)數(shù)據(jù)的方式:

方案1:在Redis存放一個(gè)對(duì)象 使用json序列化與反序列化

方案2:直接使用redis自帶序列化方式存儲(chǔ)對(duì)象

maven依賴

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.1.RELEASE</version>
    </parent>
    <dependencies>
        <!-- 集成commons工具類 -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
        </dependency>
        <!-- 集成lombok 框架 -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <!-- fastjson -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.30</version>
        </dependency>
        <!-- SpringBoot-整合Web組件 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
    </dependencies>

yml文件配置

spring:
  redis:
    host: www.kaicostudy.com
    password: 123456
    port: 6379

使用json方式存儲(chǔ)

工具類代碼

@Component
public class RedisUtils {
    @Autowired
    private StringRedisTemplate stringRedisTemplate;
    public void setString(String key, String value) {
        setString(key, value, null);
    }
    public void setString(String key, String value, Long timeOut) {
        stringRedisTemplate.opsForValue().set(key, value);
        if (timeOut != null) {
            stringRedisTemplate.expire(key, timeOut, TimeUnit.SECONDS);
        }
    }
    public String getString(String key) {
        return stringRedisTemplate.opsForValue().get(key);
    }
}

控制層

@RestController
public class IndexController {
    @Autowired
    private RedisUtils redisUtils;
    @RequestMapping("/setRedis")
    public void setRedisKey(UserEntity userEntity) {
        redisUtils.setString("userEntity", JSONObject.toJSONString(userEntity));
    }
    @RequestMapping("/getRedis")
    public UserEntity setRedisKey() {
        String userEntityJson = redisUtils.getString("userEntity");
        UserEntity userEntity = JSONObject.parseObject(userEntityJson, UserEntity.class);
        return userEntity;
    }
}

存儲(chǔ)方式:

序列化方式存儲(chǔ)數(shù)據(jù)

注意需要序列化的對(duì)象一定要實(shí)現(xiàn)Serializable接口

工具類

@Componentpublic class RedisTemplateUtils {<!--{C}%3C!%2D%2D%20%2D%2D%3E--> @Resource private RedisTemplate<String, Object> redisTemplate; public void setObject(String key, Object object) {<!--{C}%3C!%2D%2D%20%2D%2D%3E--> redisTemplate.opsForValue().set(key, object); } public Object getObjet(String key) {<!--{C}%3C!%2D%2D%20%2D%2D%3E--> return redisTemplate.opsForValue().get(key); }}@Component
public class RedisTemplateUtils {
    @Resource
    private RedisTemplate<String, Object> redisTemplate;
    public void setObject(String key, Object object) {
        redisTemplate.opsForValue().set(key, object);
    }
    public Object getObjet(String key) {
        return redisTemplate.opsForValue().get(key);
    }
}

控制層測試

@RestController
public class IndexController {
    @Autowired
    private RedisTemplateUtils redisTemplateUtils;
    @RequestMapping("/setRedisSerializable")
    public void setRedisSerializable(UserEntity userEntity) {
        redisTemplateUtils.setObject("userEntity", userEntity);
    }
    @RequestMapping("/getRedisSerializable")
    public UserEntity getRedisSerializable() {
        UserEntity userEntity = (UserEntity) redisTemplateUtils.getObjet("userEntity");
        return userEntity;
    }
}

序列化存儲(chǔ):

SpringBoot整合Redis的注解版本

詳細(xì)介紹見另一篇博客:鏈接

MySQL與Redis一致性解決同步問題

方式1:直接清除Redis的緩存,重新讀取數(shù)據(jù)庫即可

方式2:使用mq異步訂閱mysql binlog實(shí)現(xiàn)增量同步

方式3:使用alibaba的canal 框架

Redis持久化機(jī)制

全量同步與增量同步

全量同步:就是每天定時(shí)(避開高峰期)或者采用一個(gè)周期實(shí)現(xiàn)將數(shù)據(jù)拷貝到一個(gè)地方也就是Rdb存儲(chǔ)。

增量同步:比如采用對(duì)行為的操作實(shí)現(xiàn)對(duì)數(shù)據(jù)的同步,也就是AOF。

全量與增量的比較:增量同步比全量同步更加消耗服務(wù)器的內(nèi)存,但是能夠更加的保證數(shù)據(jù)的同步。

RDB與AOF

Redis提供了兩種持久化的機(jī)制,分別為RDB、AOF實(shí)現(xiàn),RDB采用定時(shí)(全量)持久化機(jī)制,但是服務(wù)器因?yàn)槟撤N原因宕機(jī)后可能數(shù)據(jù)會(huì)丟失,AOF是基于數(shù)據(jù)日志操作實(shí)現(xiàn)的持久化,所以AOF采用增量同步的方案。

Redis已經(jīng)幫助我默認(rèn)開啟了rdb存儲(chǔ),兩種模式可以同時(shí)開啟,生產(chǎn)環(huán)境中一般兩種模式都會(huì)開啟,優(yōu)先使用AOF。

RDB

Redis默認(rèn)采用rdb方式實(shí)現(xiàn)數(shù)據(jù)的持久化,以快照的形式將數(shù)據(jù)持久化到磁盤的是一個(gè)二進(jìn)制的文件dump.rdb, 在redis.conf文件中搜索“dump.rdb “。

Redis會(huì)將數(shù)據(jù)集的快照dump到dump.rdb文件中。此外,也可以通過配置文件來修改Redis服務(wù)器dump快照的頻率,在打開配置文件之后,搜索save,可以看到下面的配置信息:

save 900 1    #在900秒(15分鐘)之后,如果至少有1個(gè)key發(fā)生變化,則dump內(nèi)存快照。
save 300 10   #在300秒(5分鐘)之后,如果至少有10個(gè)key發(fā)生變化,則dump內(nèi)存快照。
save 60 10000  #在60秒(1分鐘)之后,如果至少有10000個(gè)key發(fā)生變化,則dump內(nèi)存快照。

AOF

AOF 在Redis的配置文件中存在三種同步方式,它們分別是:

appendfsync always     #每次有數(shù)據(jù)修改發(fā)生時(shí)都會(huì)寫入AOF文件,能夠保證數(shù)據(jù)不丟失,但是效率非常低。 
appendfsync everysec  #每秒鐘同步一次,可能會(huì)丟失1s內(nèi)的數(shù)據(jù),但是效率非常高。
appendfsync no          #從不同步。高效但是數(shù)據(jù)不會(huì)被持久化。

直接修改redis.conf中 appendonly yes

建議最好還是使用 everysec 既能夠保證數(shù)據(jù)的同步、效率也還可以**。AOF是以執(zhí)行命令的形式實(shí)現(xiàn)同步**

兩者區(qū)別

到此這篇關(guān)于Springboot整合Redis與數(shù)據(jù)持久化的文章就介紹到這了,更多相關(guān)Springboot整合Redis內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • redis的hGetAll函數(shù)的性能問題(記Redis那坑人的HGETALL)

    redis的hGetAll函數(shù)的性能問題(記Redis那坑人的HGETALL)

    這篇文章主要介紹了redis的hGetAll函數(shù)的性能問題,需要的朋友可以參考下
    2016-02-02
  • Redis與數(shù)據(jù)庫數(shù)據(jù)一致性的原因及解決方案

    Redis與數(shù)據(jù)庫數(shù)據(jù)一致性的原因及解決方案

    Redis作為一種高效的鍵值對(duì)存儲(chǔ)系統(tǒng),常用于緩存數(shù)據(jù)庫減少IO操作,下面這篇文章主要介紹了Redis與數(shù)據(jù)庫數(shù)據(jù)一致性的原因及解決方案,文中介紹的非常詳細(xì),需要的朋友可以參考下
    2025-04-04
  • Redis實(shí)現(xiàn)布隆過濾器的方法及原理

    Redis實(shí)現(xiàn)布隆過濾器的方法及原理

    布隆過濾器優(yōu)點(diǎn)是空間效率和查詢時(shí)間都比一般的算法要好的多,缺點(diǎn)是有一定的誤識(shí)別率和刪除困難。本文將介紹布隆過濾器的原理以及Redis如何實(shí)現(xiàn)布隆過濾器,感興趣的朋友跟隨小編一起看看吧
    2019-12-12
  • Redis安裝啟動(dòng)及常見數(shù)據(jù)類型

    Redis安裝啟動(dòng)及常見數(shù)據(jù)類型

    這篇文章主要介紹了Redis安裝啟動(dòng)及常見數(shù)據(jù)類型,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • Python利用redis限制用戶重復(fù)刷新帶來的數(shù)據(jù)問題

    Python利用redis限制用戶重復(fù)刷新帶來的數(shù)據(jù)問題

    在網(wǎng)站開發(fā)中,我們經(jīng)常會(huì)遇到需要控制用戶重復(fù)刷新頁面的情況,本文就來介紹了Python利用redis限制用戶重復(fù)刷新帶來的數(shù)據(jù)問題,感興趣的可以了解一下
    2024-03-03
  • Redis高級(jí)數(shù)據(jù)類型Hyperloglog、Bitmap的使用

    Redis高級(jí)數(shù)據(jù)類型Hyperloglog、Bitmap的使用

    很多小伙伴在面試中都會(huì)被問道 Redis的常用數(shù)據(jù)結(jié)構(gòu)有哪些?可能很大一部分回答都是 string、hash、list、set、zset,但其實(shí)還有Hyperloglog和Bitmap,本文就來介紹一下
    2021-05-05
  • mac下redis安裝、設(shè)置、啟動(dòng)停止方法詳解

    mac下redis安裝、設(shè)置、啟動(dòng)停止方法詳解

    這篇文章主要介紹了mac下redis安裝、設(shè)置、啟動(dòng)停止方法詳解,需要的朋友可以參考下
    2020-02-02
  • Redis優(yōu)惠券秒殺解決方案

    Redis優(yōu)惠券秒殺解決方案

    這篇文章主要介紹了Redis解決優(yōu)惠券秒殺應(yīng)用案例,本文先講了搶購問題,指出其中會(huì)出現(xiàn)的多線程問題,提出解決方案采用悲觀鎖和樂觀鎖兩種方式進(jìn)行實(shí)現(xiàn),然后發(fā)現(xiàn)在搶購過程中容易出現(xiàn)一人多單現(xiàn)象,需要的朋友可以參考下
    2022-12-12
  • Redis模擬延時(shí)隊(duì)列實(shí)現(xiàn)日程提醒的方法

    Redis模擬延時(shí)隊(duì)列實(shí)現(xiàn)日程提醒的方法

    文章介紹了如何使用Redis實(shí)現(xiàn)一個(gè)簡單的延時(shí)任務(wù)隊(duì)列,通過Redis的有序集合特性來存儲(chǔ)和管理延時(shí)任務(wù),通過定期檢查集合中小于等于當(dāng)前時(shí)間的任務(wù)并執(zhí)行,可以實(shí)現(xiàn)延時(shí)任務(wù)的管理,感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • Linux上安裝Redis詳細(xì)教程

    Linux上安裝Redis詳細(xì)教程

    這篇文章主要給大家詳細(xì)介紹了在Linux上安裝Redis詳細(xì)教程,文中有詳細(xì)的代碼示例和安裝步驟,對(duì)我們學(xué)習(xí)安裝redis有一定的幫助,需要的朋友可以參考下
    2023-07-07

最新評(píng)論

南开区| 淮南市| 罗定市| 大关县| 射洪县| 射洪县| 凌云县| 叙永县| 南平市| 洛川县| 富民县| 合山市| 霍林郭勒市| 宁海县| 南木林县| 佛学| 清涧县| 浙江省| 桂林市| 黑河市| 荔浦县| 龙江县| 年辖:市辖区| 肃宁县| 合水县| 永春县| 临澧县| 靖远县| 建始县| 资中县| 台江县| 白朗县| 渝中区| 武隆县| 邛崃市| 茶陵县| 嘉鱼县| 花垣县| 嘉祥县| 泊头市| 格尔木市|