實際開發使用中緩存的使用

在我的上一篇文章使用spring aop實現URL地址參數權限控制中,一開始我使用了本地緩存對配置好了的URL攔截等數據進行緩存,以提高AOP判斷權限的效率,但在後來考慮到,如果系統使用集羣的方式進行部署,這種本地緩存方式並不能共享緩存數據,每臺集羣服務器上都需要維護一份緩存,並且因爲緩存生成的時機,是在保存了URL攔截配置之後處理的,這又可能會造成每臺集羣服務器上維護的緩存數據會有差異,那麼解決的辦法就是使用獨立緩存服務器進行緩存的管理,幸好公司的系統中已經提供了對應緩存接口的實現。

緩存接口及實現


因此我只需要將本地緩存的方法,改成使用注入的ICache接口去操作緩存即可,這樣,當系統是在集羣的情況下使用,則只需要在spring的beans配置文件中,將ICache接口實現類修改爲MemcachedImpl即可實現緩存方式的切換。

在系統只是單機使用時,可以使用默認的MemcachedImpl,當然,也可以配置成MemcachedImpl,但在單機使用以及緩存數據量不大的情況下,本地緩存就足夠了,存取的速度更快,存儲的數據結構也更豐富。

在說到memcached時,我又想到了經常被拿來比較的另一個緩存框架--Redis,當我們需要緩存的數據量不大,需要緩存的數據能使用簡單的key-value存儲的話,使用memcached就足夠了,但如果對數據持久化和數據同步有要求,或者需要緩存服務器能支持更復雜的結構和操作,則Redis會是一個更好的選擇,Redis的數據可以持久化,在重新啓動之後數據依然存在,而memcached重啓之後,數據將丟失,如果多臺memcached服務器數據丟失,可能會出現“驚羣”問題,找不到緩存的請求都直接向數據庫發送請求,獲取數據,短時間內給數據庫帶來壓力可能是巨大的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章