缓存方案笔记

存储方式 存储位置 过期策略 优先级 线程安全 应用场景
Dictionary<string,object> hash 内存 不支持 不支持 不支持 很少

System.Runtime.Caching.MemoryCache (非ASP.NET的程序)

System.Web.Caching.Cache (ASP.NET)

...

hash 内存 支持 支持 支持 中小规模
Enterprise Library 5.0‘s Caching Application Block
hash(在内存中)


内存、数据库、文件等

支持  支持 支持 (过时、不推荐)
memcached            
redis    内存 支持 支持 支持 大规模(推荐)

  

  

  redis:Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串哈希表列表集合有序集合位图hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区。特点:

    Redis是完全在内存中保存数据的数据库,使用磁盘只是为了持久性目的;

    Redis相比许多键值数据存储系统有相对丰富的数据类型;

    Redis可以将数据复制到任意数量的从服务器中;

时间: 2024-12-22 16:10:07

缓存方案笔记的相关文章

数据缓存方案

数据缓存方案 by 伍雪颖 今天考虑一个适合自己项目的缓存方案,基本都实验了下(以前一直用CoreData) 1.coredata,用MagicalRecord+Mogenerator 要建表,还要写好多解析代码,果断不用,好麻烦 2.序列化 [NSKeyedArchiver archiveRootObject:model toFile:path]; [NSKeyedUnarchiver unarchiveObjectWithFile:path]; 好方便,不过总感觉体验不好,测了下方法时间,当

硬盘缓存方案DiskLruCache源代码解析

前面研究了LruCache,它作为如今用的最多的内存缓存方案已经在非常多开源缓存框架中使用.相同的还有硬盘缓存方案也就是DiskLruCache,通常的做法就是使用内存和硬盘二级缓存. 用法 1.存储: DiskLruCache diskLruCache= open(File directory, int appVersion, int valueCount, long maxSize); DiskLruCache.Editor editor = diskLruCache.edit(key);

硬盘缓存方案DiskLruCache源码解析

前面研究了LruCache,它作为现在用的最多的内存缓存方案已经在很多开源缓存框架中使用,同样的还有硬盘缓存方案也就是DiskLruCache,通常的做法就是使用内存和硬盘二级缓存. 使用方法 1.存储: DiskLruCache diskLruCache= open(File directory, int appVersion, int valueCount, long maxSize); DiskLruCache.Editor editor = diskLruCache.edit(key);

移动应用开发(IOS/android等)中一个通用的图片缓存方案讲解(附流程图)

在移动应用开发中,我们经常会遇到从网络请求图片到设备上展示的场景. 如果每次都重复发起请求,浪费流量.浪费电量,用户体验也不佳: 将图片持久化到磁盘也不失为一种策略:但每次从文件读取图片也存在一定的io开销,就算采用此策略,我们也需要控制磁盘缓存的容量,以免占用过多系统资源. 其实没有一个方案可以说是完美的方案,只有最适合自己业务需求的方案,才可以说是一个好方案. 我们下面所讲解的方案具备很强的通用性,设计思路简单而清晰: 1.假设每个网络图片的url具有唯一性,如果网络上的图片变化了,会引起输

jQuery数据缓存方案详解:$.data()的使用

我们经常使用隐藏控件或者是js全局变量来临时存储数据,全局变量容易导致命名污染,隐藏控件导致经常读写dom浪费性能.jQuery提供了自己的数据缓存方案,能够达到和隐藏控件.全局变量相同的效果,但是jQuery实现方式更优雅.为了更好地使用jQuery数据缓存方案,我们需要掌握$.data().$.cache.$.expando.$.hasData().$.removeData(). $.hasData()用来判断某个对象是否有附加的属性,可以给任何JavaScript对象和HTMLElemen

白鹭引擎 5.2.7 新增自动合图插件、二进制和声音缓存方案功能

2018年8月13日,白鹭引擎发布5.2.7 版本.本次版本主要新增了两大功能:命令行增加自动合图插件TextureMergerPlugin,微信小游戏支持库增加二进制和声音缓存方案. 同时,本次版本还是对 5.2 版本的一次集中性缺陷修复,更新修复了大家反馈的涉及2D渲染- JavaScript.AssetsManager.微信小游戏支持库的数个BUG.在此,我们要再次特别感谢开发者们通过Egret社区.白鹭引擎小游戏开发微信群等渠道提交的BUG反馈. 5.2.7版本中新增的自动合图插件可以帮

SSD缓存方案之LVM cache

SSD作缓存方案之LVM cache 1. 前言 最近因为工作的需要,接触了一些SSD作缓存相关的知识.所谓SSD作缓存就是使用fast device(例如SSD),给slow device(例如机械硬盘)做缓存,以提高计算机整体的I/O存储性能. 目前在个人计算机中,使用的比较多的是机械硬盘和固态硬盘(SSD).机械硬盘具有容量大,价格便宜,容错性好,寿命较长等优点:缺点是读写性能相对机械硬盘有比较大的差距.固态硬盘的优点是读写性能较好,特别是随机读写性能:缺点是价格比较昂贵,容量小,写入寿命

zmNgFrameWork 架构升级ng1.5和md5静态资源缓存方案【angular1.x】

前言: 在我前面的博客,angular项目总结——angular + browserify + gulp + bower + less 架构分享  把我开发angular的架构进行了分享,并上传到了github https://github.com/zimv/zmNgFrameWork . 而后我又在我的 gulp系列 里分享了 gulp-rev:项目部署缓存解决方案----gulp系列(六) ,也更新了github上gulpStart的rev分支 https://github.com/zimv

缓存方案之Redis

Redis简介   Redis是Remote Dictionary Server(Redis) 的缩写,或许光听名字你就能猜出它大概是做什么的.不错,它是一个由Salvatore Sanfilippo编写的key-value存储系统,是一个使用ANSI C语言编写.遵守BSD协议.支持网络.可基于内存亦可持久化的日志型的Key-Value数据库,并提供多种语言的API.在很多地方,Redis也被业内人士称为数据结构服务器,因为它允许缓存的值(value)可以是字符串(string).哈希(has