缓存架构
通常情况下,大量数据是保存在数据库中(zhōng)的,而应用(yòng)程序访问数据库是一项很(hěn)费时的操作(zuò)。如果先将数据库中(zhōng)的数据缓存到缓存區(qū)中(zhōng),当应用(yòng)程序需要这些数据的时候,直接存缓存中(zhōng)提取,就可(kě)以减少系统开销,大大提高了数据访问的速度。同时,在ASP.NET中(zhōng),通过类SQLCacheDependency建立起与新(xīn)一代数据库的SQL缓存依赖关系,这种关系可(kě)以使得数据库能(néng)够自动监视数据表的状况,一旦数据表发生变化,立即启动数据库本身的触发器将相应的缓存區(qū)中(zhōng)的数据变為(wèi)无效,这样就确保了缓存區(qū)中(zhōng)的数据和数据库中(zhōng)的数据是适时匹配的。
Redis是一个开源(BSD许可(kě)的)的使用(yòng)ANSIC语言编写的、支持网络、可(kě)基于内存亦可(kě)持久化的日志(zhì)型、Key-Value数据库。它可(kě)以用(yòng)作(zuò)数据库、缓存和消息中(zhōng)间件,它支持多(duō)种类型的数据结构,如字符串(strings)、散列(hashes)、列表(lists)、集合(sets)、有(yǒu)序集合(sortedsets)与范围查询等。这些数据都支持Push/pop、add/remove及取交集并集和差集及更丰富的操作(zuò),而且这些操作(zuò)都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,為(wèi)了保证效率,数据都是缓存在内存中(zhōng)。區(qū)别的是redis会周期性的把更新(xīn)的数据写入磁盘或者把修改操作(zuò)写入追加的记录文(wén)件,并且在此基础上实现了master-slave(主从)同步。数据可(kě)以从主服務(wù)器向任意数量的从服務(wù)器上同步,从服務(wù)器可(kě)以是关联其他(tā)从服務(wù)器的主服務(wù)器。这使得Redis可(kě)执行单层树复制。存盘可(kě)以有(yǒu)意无意的对数据进行写操作(zuò)。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可(kě)订阅一个频道并接收主服務(wù)器完整的消息发布记录。同步对读取操作(zuò)的可(kě)扩展性和数据冗余很(hěn)有(yǒu)帮助。