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

springboot中redis正確的使用詳解

 更新時間:2022年04月26日 08:36:26   作者:Dale Lucy  
本文主要介紹了springboot中redis正確的使用,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

redis實現(xiàn)了對數(shù)據(jù)的緩存,在項目里一些字典數(shù)據(jù),會話數(shù)據(jù),臨時性數(shù)據(jù)都會向redis來存儲,而在springboot里對redis也有支持,一般來說多個線程共同使用一個redis實現(xiàn)是有線程安全的風險的,而每個實現(xiàn)一個線程又太浪費資源,無法控制線程數(shù)量是非常危險的,所以就出現(xiàn)了一些redis線程池組件,下面說一下兩個主要的組件。

jedis 線程池主要是每個實例有自己的線程,線程可以從它建立的池子里獲取
lettuce lettuce是 apache推出的線程池工具,它的redis實例是可以被多個線程共享訪問的,提高了資源使用率

redis序列化配置

一般來說, redis-key采用字符串序列化; redis-value采用json序列化, json的體積小,可讀性高,不需要實現(xiàn)serializer接口。

/**
?* 對redis的配置.
?*/
@Configuration
public class RedisConfig {

? ? @Autowired
? ? private RedisConnectionFactory redisConnectionFactory;

? ? /**
? ? ?* redis重寫RedisTemplate.
? ? ?*/
? ? @Bean
? ? public RedisTemplate redisTemplate() {
? ? ? ? RedisTemplate redisTemplate = new RedisTemplate();
? ? ? ? RedisSerializer<String> stringSerializer = new StringRedisSerializer();
? ? ? ? Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
? ? ? ? ObjectMapper om = new ObjectMapper();
? ? ? ? om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
? ? ? ? //序列化時允許非常量字段均輸出類型,即redis序列化后帶有類型
? ? ? ? om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
? ? ? ? jackson2JsonRedisSerializer.setObjectMapper(om);
? ? ? ? // redis key的序列化
? ? ? ? redisTemplate.setKeySerializer(stringSerializer);
? ? ? ? redisTemplate.setHashKeySerializer(stringSerializer);

? ? ? ? // redis value的序列化
? ? ? ? redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
? ? ? ? redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);

? ? ? ? redisTemplate.setConnectionFactory(redisConnectionFactory);
? ? ? ? return redisTemplate;
? ? }
}

上面代碼中,om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL)產(chǎn)生的json串是帶有類型的,這樣再反序列化時可以直接通過類型去推斷。

[
  "com.lind.basic.entity.Token",
  {
    "credentials": "ok",
    "region": "hello",
    "bucket": null
  }
]

看一下添加和讀取的代碼

?@GetMapping("set")
? ? public String set() throws JsonProcessingException {
? ? ? ? Token token = Token.builder()
? ? ? ? ? ? ? ? .credentials("ok")
? ? ? ? ? ? ? ? .region("hello")
? ? ? ? ? ? ? ? .build();
? ? ? ? redisTemplate.opsForValue().set("test:user", token);//redisTemplate幫我們序列化
? ? ? ? redisTemplate.opsForHash().put("author", "zzl", token);
? ? ? ? return "OK";
? ? }

? ? @GetMapping("get")
? ? public Token get() throws IOException {
? ? ? ? return (Token) redisTemplate.opsForValue().get("test:user");
? ? }

注意:對于實體類Token它應(yīng)該有一個無參構(gòu)造方法,這是反序列化時需要的。

到此這篇關(guān)于springboot中redis正確的使用詳解的文章就介紹到這了,更多相關(guān)springboot redis使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java8新特性之Optional的深入解析

    java8新特性之Optional的深入解析

    這篇文章主要給大家介紹了關(guān)于java8新特性之Optional的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-02-02
  • @RequestAttribute和@RequestParam注解的區(qū)別及說明

    @RequestAttribute和@RequestParam注解的區(qū)別及說明

    這篇文章主要介紹了@RequestAttribute和@RequestParam注解的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • springboot使用com.github.binarywang包實現(xiàn)微信網(wǎng)頁上的支付和退款

    springboot使用com.github.binarywang包實現(xiàn)微信網(wǎng)頁上的支付和退款

    最近做項目需要實現(xiàn)在pc端需要實現(xiàn)微信的支付,本文主要介紹了springboot使用com.github.binarywang包實現(xiàn)微信網(wǎng)頁上的支付和退款,具有一定的參考價值,感興趣的可以了解一下
    2024-05-05
  • 實例解析Java單例模式編程中對抽象工廠模式的運用

    實例解析Java單例模式編程中對抽象工廠模式的運用

    這篇文章主要介紹了實例解析Java單例模式編程中對抽象工廠模式的運用,抽象工廠模式可以看作是工廠方法模式的升級版,本需要的朋友可以參考下
    2016-02-02
  • java引用jpython的方法示例

    java引用jpython的方法示例

    這篇文章主要介紹了java引用jpython的方法,結(jié)合實例形式分析了java引用jpython及相關(guān)使用技巧,需要的朋友可以參考下
    2016-11-11
  • springcloud gateway設(shè)置context-path的操作

    springcloud gateway設(shè)置context-path的操作

    這篇文章主要介紹了springcloud gateway設(shè)置context-path的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • RabbitMQ高級應(yīng)用之消費端限流策略basicQos詳解

    RabbitMQ高級應(yīng)用之消費端限流策略basicQos詳解

    這篇文章主要介紹了RabbitMQ高級應(yīng)用之消費端限流策略basicQos詳解,高并發(fā)情況下,隊列里面一瞬間就就積累了上萬條數(shù)據(jù),但是消費者無法同時處理這么多請求,這種場景下我們就需要對消費端進行限流,需要的朋友可以參考下
    2023-08-08
  • Java數(shù)據(jù)庫連接池連接Oracle過程詳解

    Java數(shù)據(jù)庫連接池連接Oracle過程詳解

    這篇文章主要介紹了Java數(shù)據(jù)庫連接池連接Oracle過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • idea如何關(guān)閉右側(cè)類顯示方法

    idea如何關(guān)閉右側(cè)類顯示方法

    這篇文章主要介紹了idea如何關(guān)閉右側(cè)類顯示方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • MyBatis 中使用 Mapper 簡化代碼的方法

    MyBatis 中使用 Mapper 簡化代碼的方法

    這篇文章主要介紹了MyBatis 中使用 Mapper 簡化代碼的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01

最新評論

新疆| 衡南县| 获嘉县| 库车县| 齐河县| 阿巴嘎旗| 通江县| 五峰| 兴仁县| 赤水市| 本溪市| 多伦县| 凉城县| 上饶县| 阿坝县| 新邵县| 茌平县| 利川市| 樟树市| 延吉市| 永年县| 永靖县| 若羌县| 秀山| 黄平县| 清远市| 安溪县| 康乐县| 邵阳市| 武川县| 德钦县| 五指山市| 公主岭市| 夏河县| 嘉善县| 周至县| 连州市| 沁水县| 万载县| 峨眉山市| 深泽县|