欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Redis序列化設(shè)置以及jetcache連接Redis序列化的設(shè)置過程

 更新時間:2023年12月20日 09:39:59   作者:東莞呵呵  
這篇文章主要介紹了Redis序列化設(shè)置以及jetcache連接Redis序列化的設(shè)置過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

1、問題

問題:

我在使用jetchche進(jìn)行連接redis的時候,存入redis的value一直使用的是redis默認(rèn)的序列化方式,是使用的jdk序列化。

當(dāng)我使用jetcache向redis存入一個對象

 存入redis的結(jié)果:

 這是使用jdk序列化的結(jié)果。

但是我記得使用redis的時候可以更改序列化方式為json序列化,如果使用json序列化的結(jié)果就是這樣的:

 我想把jetcache的序列化方式也改成這種可讀性好的。

2、Redis序列化的設(shè)置

當(dāng)我們使用springDataRedis依賴直接連接redis的時候我們默認(rèn)使用的也是jdk序列化,此時我們存入這個user對象的結(jié)果就和這個是一樣的。

這種序列化的方式可讀性比較差。

更改序列化的方式:

@Configuration
public class RedisConfig {
 
    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory){
        // 創(chuàng)建RedisTemplate對象
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        // 設(shè)置連接工廠
        template.setConnectionFactory(connectionFactory);
        // 創(chuàng)建JSON序列化工具
        GenericJackson2JsonRedisSerializer jsonRedisSerializer = 
                                        new GenericJackson2JsonRedisSerializer();
        // 設(shè)置Key的序列化
        template.setKeySerializer(RedisSerializer.string());
        template.setHashKeySerializer(RedisSerializer.string());
        // 設(shè)置Value的序列化
        template.setValueSerializer(jsonRedisSerializer);
        template.setHashValueSerializer(jsonRedisSerializer);
        // 返回
        return template;
    }
}

此時我們就可以進(jìn)行接送序列化存入redis的就是這樣的:

 這樣存入redis的時候因為前面會加上一串這個對象的信息,這樣也額外占用了空間。

如果我們需要解決占用的這部分空間,我們可以手動進(jìn)行JSON序列化,然后同一使用String序列化器。

@Autowired
private StringRedisTemplate stringRedisTemplate;
// JSON序列化工具
private static final ObjectMapper mapper = new ObjectMapper();
 
@Test
void testSaveUser() throws JsonProcessingException {
    // 創(chuàng)建對象
    User user = new User("虎哥", 21);
    // 手動序列化
    String json = mapper.writeValueAsString(user);
    // 寫入數(shù)據(jù)
    stringRedisTemplate.opsForValue().set("user:200", json);
 
    // 獲取數(shù)據(jù)
    String jsonUser = stringRedisTemplate.opsForValue().get("user:200");
    // 手動反序列化
    User user1 = mapper.readValue(jsonUser, User.class);
    System.out.println("user1 = " + user1);
}

此時,存入的json字符串就沒有了前面類的信息。

3、jetcache序列化設(shè)置

我們使用jetcache使用redis作為遠(yuǎn)程緩存時,默認(rèn)序列化工具也是使用的JDK序列化,jetcahce提供的配置文件中有這么一項:keyConvertor,這個配置可以指定為alibaba的fastjson的序列化工具,但是這個修改的時key的序列化,而不是value。

我們還是達(dá)不到提高可讀性的效果。

這是官方提供的jetcache的配置:

jetcache:
  statIntervalMinutes: 15
  areaInCacheName: false
  local:
    default:
      type: linkedhashmap #other choose:caffeine
      keyConvertor: fastjson2 #other choose:fastjson/jackson
      limit: 100
  remote:
    default:
      type: redis
      keyConvertor: fastjson2 #other choose:fastjson/jackson
      broadcastChannel: projectA
      valueEncoder: java #other choose:kryo/kryo5
      valueDecoder: java #other choose:kryo/kryo5
      poolConfig:
        minIdle: 5
        maxIdle: 20
        maxTotal: 50
      host: ${redis.host}
      port: ${redis.port}

我們可以看到有個配置叫做 valueEncoder和valueDecoder。這個配置才是真正的value的序列化工具。

這個配置jetcache給我們提供了三個選擇,分別是:java(jdk序列化),kryo和kryo5。

并不能改成json序列化。

總結(jié)

單獨使用redis的時候可以改序列化工具為json序列化,但是更推薦使用手動序列化然后直接存String,這樣更省空間。

如果使用jetcache的時候只能改為jdk,kryo序列化工具,暫時不支持使用json序列化工具。

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

相關(guān)文章

  • Redis利用Pipeline加速查詢速度的方法

    Redis利用Pipeline加速查詢速度的方法

    這篇文章主要給大家介紹了關(guān)于Redis利用Pipeline加速查詢速度的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Redis具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Redis+Caffeine實現(xiàn)分布式二級緩存組件實戰(zhàn)教程

    Redis+Caffeine實現(xiàn)分布式二級緩存組件實戰(zhàn)教程

    這篇文章主要介紹了Redis+Caffeine實現(xiàn)分布式二級緩存組件實戰(zhàn)教程,介紹了分布式二級緩存的優(yōu)勢,使用組件的方法,通過示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • 徹底弄懂Redis的LRU淘汰策略

    徹底弄懂Redis的LRU淘汰策略

    本文主要介紹了LRU淘汰策略以及實現(xiàn)一個LRU算法,文章會結(jié)合圖解循序漸進(jìn)的講解,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 淺談Redis哨兵模式的使用

    淺談Redis哨兵模式的使用

    這篇文章主要介紹了淺談Redis哨兵模式的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Redis集群數(shù)據(jù)清理的操作指南

    Redis集群數(shù)據(jù)清理的操作指南

    本文介紹了Redis集群全量數(shù)據(jù)清理的操作流程,包括檢查數(shù)據(jù)、腳本清理步驟、結(jié)果確認(rèn)及注意事項,建議在低峰期進(jìn)行并備份數(shù)據(jù),確保上線環(huán)境干凈,需要的朋友可以參考下
    2025-10-10
  • Redis常見數(shù)據(jù)類型List列表使用詳解

    Redis常見數(shù)據(jù)類型List列表使用詳解

    Redis的List是一種有序的字符串集合,支持兩端高效插入和刪除,適用于隊列和棧,這篇文章主要介紹了Redis常見數(shù)據(jù)類型List列表使用的相關(guān)資料,需要的朋友可以參考下
    2024-12-12
  • Redis中的數(shù)據(jù)過期策略詳解

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

    這篇文章主要介紹了Redis中的數(shù)據(jù)過期策略,文中通過示例代碼介紹的很詳細(xì),相信對大家的理解和學(xué)習(xí)具有一定的參考借鑒價值,有需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-01-01
  • Windows設(shè)置Redis為開機(jī)自啟動的流程步驟

    Windows設(shè)置Redis為開機(jī)自啟動的流程步驟

    Redis作為當(dāng)前最常用的當(dāng)前緩存技術(shù),基本上Web應(yīng)用中都有使用,所以,每次我們在本地啟動項目前,都必須將Redis服務(wù)端啟動,但是,每次都要去啟動Redis就很麻煩,本文主要就是介紹Windows系統(tǒng)如何配置開機(jī)啟動Redis,需要的朋友可以參考下
    2024-05-05
  • 利用Redis實現(xiàn)點贊功能的示例代碼

    利用Redis實現(xiàn)點贊功能的示例代碼

    點贊對我們來說并不陌生,我們經(jīng)常會在手機(jī)軟件或者網(wǎng)頁中看到它。今天就讓我們來了解一下如何用Redis實現(xiàn)這一功能吧,感興趣的可以嘗試一下
    2022-06-06
  • Redis中HyperLogLog的使用小結(jié)

    Redis中HyperLogLog的使用小結(jié)

    Redis 的 HyperLogLog 是一種概率性數(shù)據(jù)結(jié)構(gòu),用于統(tǒng)計唯一元素的數(shù)量(基數(shù)),本文主要介紹了Redis中HyperLogLog的使用小結(jié),感興趣的可以了解一下
    2025-05-05

最新評論