Redis緩存中數據在分布式服務模塊中通過key獲取不到數據問題

問題場景:
在模塊A服務中,把字典表中的數據加載到redis緩存中,在本服務A中通過key可以正常獲取數據,但是在模塊B服務、模塊C等服務中通過key卻獲取不到對應的數據

分析解決:
1、這種問題一般是由于RedisTemplate類型的泛型影響所致,也就是說在SpringBoot項目啟動成功之后,Spring容器中會有多個同名(同Id)的 redisTemplate 實例對象
2、Spring容器中為什么會有多個 redisTemplate 實例對象,因為 RedisTemplate有帶泛型的和不帶泛型的接口類,所以Spring初始化生成 redisTemplate 的 Bean對象時候就會分別注冊帶泛型和不帶泛型的Bean,甚至注冊Bean更細分到String、Object等類型
3、所以我們在注入使用 RedisTemplate 對象的時候,就不能優先以類型注入了,因為以類型注入的時候并不知到取哪個泛型的實例對象,所以用 @Autowired 注入就會出現無法精準注入對應泛型的實例對象
4、總結就是注入 RedisTemplate 實例時,要用優先以名稱注入的方式 @Resource,如果用 @AutoWired 注入服務之間就無法正常通過Redis的key獲取value值

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容