緩存架構
通常情況下,大量數據是保存在數據庫中的,而應用程序訪問數據庫是一項很費時的操作。如果先將數據庫中的數據緩存到緩存區中,當應用程序需要這些數據的時候,直接存緩存中提取,就可以減少系統開銷,大大提高了數據訪問的速度。同時,在ASP.NET中,通過類SQLCacheDependency建立起與新一代數據庫的SQL緩存依賴關系,這種關系可以使得數據庫能夠自動監視數據表的狀況,一旦數據表發生變化,立即啟動數據庫本身的觸發器將相應的緩存區中的數據變為無效,這樣就確保了緩存區中的數據和數據庫中的數據是適時匹配的。
Redis是一個開源(BSD許可的)的使用ANSIC語言編寫的、支持網絡、可基于內存亦可持久化的日志型、Key-Value數據庫。它可以用作數據庫、緩存和消息中間件,它支持多種類型的數據結構,如字符串(strings)、散列(hashes)、列表(lists)、集合(sets)、有序集合(sortedsets)與范圍查詢等。這些數據都支持Push/pop、add/remove及取交集并集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎上,redis支持各種不同方式的排序。與memcached一樣,為了保證效率,數據都是緩存在內存中。區別的是redis會周期性的把更新的數據寫入磁盤或者把修改操作寫入追加的記錄文件,并且在此基礎上實現了master-slave(主從)同步。數據可以從主服務器向任意數量的從服務器上同步,從服務器可以是關聯其他從服務器的主服務器。這使得Redis可執行單層樹復制。存盤可以有意無意的對數據進行寫操作。由于完全實現了發布/訂閱機制,使得從數據庫在任何地方同步樹時,可訂閱一個頻道并接收主服務器完整的消息發布記錄。同步對讀取操作的可擴展性和數據冗余很有幫助。