前言
項目使用redis作為緩存數據,但面臨著問題,比如,項目A,項目B都用到redis,而且用的redis都是一套集群,這樣會帶來一些問題。
問題:比如項目A的開發(fā)人員,要緩存一些熱門數據,想到了redis,于是乎把數據放入到了redis,自定義一個緩存key:hot_data_key,數據格式是項目A自己的數據格式,項目B也遇到了同樣的問題,也要緩存熱門數據,也是hot_data_key,數據格式是項目B是自己的數據格式,由于用的都是同一套redis集群,這樣key就是同一個key,有的數據格式適合項目A,有的數據格式適合項目B,會報錯的,我們項目中就遇到這樣的一個錯誤,找不到原因,結果就是兩個平臺用到了同一key,很懊惱。
解決方式:
1、弄一個常量類工程,所有的redis的key都放入到這個工程里,加上各自的平臺標識,這樣就不錯錯了
2、spring Aop結合redis,再相應的service層,加上注解,key的規(guī)范是包名+key名,這樣就不錯重復了
思路:
1、自定義注解,加在需要緩存數據的地方
2、spring aop 結合redis實現(xiàn)
3、SPEL解析注解參數,用來得到響應的注解信息
4、redis的key:包名+key 防止redis的key重復
實現(xiàn)如下:
項目準備,由于是maven項目,需要引入相關的包
fastjson包spring-data-redis com.alibaba fastjson ${com.alibaba.fastjson} org.springframework.data spring-data-redis ${spring.redis.version} redis.clients jedis ${jedis.redis.clients.version}