『壹』 11.33數據緩存的好處是什麼,如何實現數據緩存
資料庫緩存的作用是只在數據第一次被訪問時才從資料庫中讀取數據,將數據放在存儲介質中,以後查詢相同的數據則直接從存儲介質(內存)中返回,這樣速度有明顯的提升。
為了更好的使用數據緩存,應注意以下幾點:
1、如果一個實體標記了緩存屬性,則無論該類是 通過ID查詢還是其它方式的查詢得到的結果,都會自動緩存。 所以,不必擔心結果是否能夠按照預期的需要緩存。
2、查詢緩存如何使用? 在CastleActiveRecord中的查詢類沒有提供對查詢緩存的支持,只能使用NHibernate的查詢才可以,例子如上所述。
3、緩存的性能,緩存在一定程度上可以提高應用的性能,但需要正確使用,如果使用不慎,緩存反而成為負擔,比如,在應用中如果使用NHibernate.Caches.Prevalence 作為緩存提供程序,如果數據量大,它要在指定目錄下寫入緩存文件,IO消耗相當大,雖然資料庫訪問少了,但是應用的IO卻增長,還不如不使用緩存。因此,使用緩存時應盡量避免使用文件型緩存,應使用內存型緩存。
4、緩存的策略。查詢緩存應只對只讀性數據進行緩存,如果是經常讀寫的數據,可能造成數據不一致,至於造成數據不一致的原因沒有花時間根究。
5、如果實體有繼承關系,必須在被繼承的類上也標記使用 緩存,否則,子類的緩存無效。
6、如果對查詢進行緩存,必須實體也要標記緩存,否則查詢緩存無效。
『貳』 redis做mysql的緩存
redis緩存其實就是把經常訪問的數據放到redis裡面,用戶查詢的時候先去redis查詢,沒有查到就執行sql語句查詢,同時把數據同步到redis裡面。redis只做讀操作,在內存中查詢速度快。
使用redis做緩存必須解決兩個問題,首先就是確定用何種數據結構存儲來自mysql的數據;確定數據結構之後就是需要確定用什麼標識來作為數據的key。
mysql是按照表存儲數據的,這些表是由若干行組成。每一次執行select查詢,mysql都會返回一個結果集,這個結果是由若干行組成的。redis有五種數據結構:列表list,哈希hash,字元串string,集合set,sorted set(有序集合),對比幾種數據結構,string和hash是比較適合存儲行的數據結構,可以把數據轉成json字元串存入redis。
全量遍歷鍵: keys pattern keys *
有人說 KEYS 相當於關系性數據的庫的 select * ,在生產環境幾乎是要禁用的
不管上面說的對不對, keys 肯定是有風險的。那我們就換一種方案,在存數據的時候。把數據的鍵存一下,也存到redis裡面選hash類型,那麼取的時候就可以直接通過這個hash獲取所有的值,自我感覺非常好用!