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

關(guān)于redisson緩存序列化的幾枚大坑說明

 更新時間:2021年08月03日 14:38:41   作者:努力的小星星  
這篇文章主要介紹了redisson緩存序列化幾枚大坑,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

redisson緩存序列化幾枚坑

1、返回值為Map<T, K> 的方法增加@Cacheable后,T和K被類型擦出了,為啥?

redisson結(jié)合Spring使用時,會有RedissonSpringCacheManager,將redissonClient自動注入,另外還有codec的概念,即序列化和反序列化,可以查看實現(xiàn)類,就幾種實現(xiàn),假設(shè)我們使用org.redisson.codec.JsonJacksonCodec,可以看到,decode中,僅一個Object.class,即范型信息并未帶入,故出現(xiàn)了問題

2、對于匿名內(nèi)部類的濫用導致反序列化失敗

你會想,匿名內(nèi)部類有什么影響?

那么跟著我看下我們時常會寫的一種Map寫法:

Map<String, Object> map = new HashMap(){{put("mykey", "test");}};

這種方式有什么問題呢,這就涉及到匿名內(nèi)部類聲明方式在實際編譯時是如何存在于class文件中的

...
$1 extends HashMap{
    ...
}
...

也就是新生成了一個匿名類型,而這個類型在反序列化時是沒辦法找到構(gòu)造函數(shù)的,故而是有問題的。

按上面寫法后,序列化時,存儲的是xxx$1這個匿名類型,所以反序列化也就失敗了。

redis的坑(序列化、scan)

最近做的一個項目用到redis,需要使用redis對數(shù)據(jù)進行緩存,用戶的動作也會更新redis中的數(shù)據(jù),為了方便管理,采用了hash的方式。神坑就此開始。

最開始是序列化的坑

使用包裝的ByteArrayRedisTemplate時,對象存入redis之后,rdm可以查看到,但是程序里面取出來是亂碼,使用原生的RedisTemplate就不會出現(xiàn)這個問題,后來發(fā)現(xiàn)是對象包裝的問題,原生的RedisTemplate中支持將value設(shè)置為對象,但是包裝的ByteArrayRedisTemplate只能用byte[],所以我這邊先把對象轉(zhuǎn)為json,然后json轉(zhuǎn)為byte[],再寫入redis,取數(shù)據(jù)的時候,查redis的結(jié)果是byte[],然后轉(zhuǎn)為json,再轉(zhuǎn)為對象,就沒問題了。

但是!??!不知道什么原因,這樣做之后rdm中查不到這個key了,可能是redis版本和rdm版本不兼容的問題,這個有待驗證。你看到的一切不一定存在,你看不到的也不一定不存在,當個碼農(nóng)還要思考這些哲學問題。。。

還有一個坑

spring整合的redis是不支持scan指令的,而且不只是scan指令,基本上所有摟全量的指令都被禁止,當然,像keys之類的指令還是能用,但是在生產(chǎn)環(huán)境下千萬不要使用,因為很容易阻塞,業(yè)務(wù)動不動就停幾秒,很尷尬。而且現(xiàn)在大部分在生產(chǎn)環(huán)境下使用的redis都是用codis包裝的,codis更絕,直接禁止使用那些指令,同志們可以自己動手搜一下,被禁止的指令還是挺多得,我第一次看還以為自己看錯了,尼瑪禁了一大半,摟全量的指令全部被禁。不過這樣做的好處就是數(shù)據(jù)安全,使用scan指令的漏洞撈數(shù)據(jù)的軟件也不在少數(shù)。

最后項目只能放棄使用redis了,因為我必須得摟全量。。。通過這個事件也懂得了,代碼開發(fā)一定要一邊開發(fā)一邊測試(自己測試),不然有的坑,掉進去了都不知道,還在屁顛屁顛的往里刨,最后把自己埋了。

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

相關(guān)文章

  • Redis對批量數(shù)據(jù)實現(xiàn)分布式鎖的實現(xiàn)代碼

    Redis對批量數(shù)據(jù)實現(xiàn)分布式鎖的實現(xiàn)代碼

    為了防止多人多電腦同時操作一條數(shù)據(jù),我們自己開發(fā)了一個簡單的基于Redis實現(xiàn)的分布式鎖,Redis對批量數(shù)據(jù)實現(xiàn)分布式鎖相關(guān)知識感興趣的朋友一起看看吧
    2022-03-03
  • 設(shè)置Redis最大占用內(nèi)存的實現(xiàn)

    設(shè)置Redis最大占用內(nèi)存的實現(xiàn)

    本文主要介紹了設(shè)置Redis最大占用內(nèi)存的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-05-05
  • redis分布式鎖優(yōu)化的實現(xiàn)

    redis分布式鎖優(yōu)化的實現(xiàn)

    本文主要介紹了redis分布式鎖優(yōu)化的實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Redisson如何解決redis分布式鎖過期時間到了業(yè)務(wù)沒執(zhí)行完問題

    Redisson如何解決redis分布式鎖過期時間到了業(yè)務(wù)沒執(zhí)行完問題

    這篇文章主要介紹了Redisson如何解決redis分布式鎖過期時間到了業(yè)務(wù)沒執(zhí)行完問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • 基于Redis無序集合如何實現(xiàn)禁止多端登錄功能

    基于Redis無序集合如何實現(xiàn)禁止多端登錄功能

    這篇文章主要給你大家介紹了關(guān)于基于Redis無序集合如何實現(xiàn)禁止多端登錄功能的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-12-12
  • Redis集群部署Windows版本的過程詳解

    Redis集群部署Windows版本的過程詳解

    本文介紹了如何在Windows系統(tǒng)上部署Redis集群,包括從GitHub下載Windows版本的Redis、配置文件的創(chuàng)建、啟動腳本的編寫以及集群的啟動和配置過程,感興趣的朋友一起看看吧
    2025-03-03
  • Windows系統(tǒng)安裝Redis的詳細圖文教程

    Windows系統(tǒng)安裝Redis的詳細圖文教程

    但有時候想在windows下折騰下Redis,那么就可以參考下面的方法了,雖然腳本之家小編以前整理了一些,發(fā)現(xiàn)這篇做的比較詳細,下載也給出來了
    2018-08-08
  • redis獲取所有key的方法

    redis獲取所有key的方法

    本文主要介紹了redis獲取所有key的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • 淺談Redis在直播場景的實踐方案

    淺談Redis在直播場景的實踐方案

    這篇文章主要介紹了淺談Redis在直播場景的實踐方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • redis如何清理緩存

    redis如何清理緩存

    本文主要介紹了redis如何清理緩存,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-01-01

最新評論

济阳县| 区。| 平定县| 芒康县| 大港区| 长泰县| 随州市| 东方市| 临西县| 安顺市| 平谷区| 鹿邑县| 高青县| 贺州市| 芒康县| 应城市| 延长县| 离岛区| 长春市| 河津市| 宿松县| 平泉县| 鸡西市| 博爱县| 苏尼特右旗| 佛山市| 南昌县| 德格县| 得荣县| 新丰县| 河南省| 昌邑市| 余姚市| 土默特左旗| 新绛县| 屏东市| 长沙市| 水富县| 新乡县| 霍林郭勒市| 竹溪县|