缓存开源软件使用的原则和建议
2015-06-05 11:16
585 查看
=====================Redis==================
1.Redis is an open source, BSD licensed, advanced key-value cache and store. It is often referred to as a data structure server since keys can contain strings, hashes, lists, sets,sorted
sets, bitmaps and hyperloglogs.
2. 使用场景:
• 对数据结构要求比较丰富(如map、list、sorted sets),memcached不支持的,建议用Redis。
• VALUE的size大于1M的,建议用Redis。
• VALUE的size分布不均匀的,建议用Redis。
• 对数据可靠性要求比较高的,建议用Redis。
3.使用注意事项:
• 不支持smp,一个instance只能使用一个core,合理分配单个实例的大小。
• 不要浪费扩容比较方便,支持配置热刷(不用重启实例能在线扩容)。
• 支持namespace
• 支持主从(全量同步时有可能导致全量镜像,对网络造成压力)
• 支持持久化(fork进程时有短暂服务终止,大内存会体现得很明显,根据其他互联网公司的经验,一般一个instance控制在10G左右比较好)
=====================Memcached==================
1.Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储健/值对的hashmap。其服务器端守护进程(daemon)是用C写的,但客户端可以用任何语言来编写,并用memcached协议与服务器守护进程进行通讯,实现数据缓存。
2.Memcached应用场合
• Memcached不是万能的,也不是使用在所有场合。
• 首先:Memcached是分布式的内存对象缓存,不需要“分布”,不需要“共享的”,或者规模小到只有一台服务器的应用,Memcached不仅不会带来任何好处,反而会拖慢系统效率。(使用Memcached内存并不会得到成百上千的读写速度提高,实际瓶颈在于网络连接,即使网络带宽满负荷,Memcahed服务器进程本身并不占用多少CPU资源)
• Memcached是使用内存来管理数据的,所以是易失的,当服务器重启或者Memcached进程中止数据都会丢失,所以Memcached不能用来持久保存数据。
• 在Memcached中可以保存的Item数量是没有限制的,只要内存足够
3. 用户接入注意事项:
• Memcached不善于处理大数据,一般我们不建议存放超过1M的对象在Memcached。如果有大于1M的数据,需要做优化。
• Memcached是缓存,可靠性差,但性能高。必须有容错机制,在Memcached出现错误时,有相应的补救措施。
• 公司环境下跨网段的访问,会出现较小概率的异常,导致无法get/set/delete数据到Memcached服务器。
1.Redis is an open source, BSD licensed, advanced key-value cache and store. It is often referred to as a data structure server since keys can contain strings, hashes, lists, sets,sorted
sets, bitmaps and hyperloglogs.
2. 使用场景:
• 对数据结构要求比较丰富(如map、list、sorted sets),memcached不支持的,建议用Redis。
• VALUE的size大于1M的,建议用Redis。
• VALUE的size分布不均匀的,建议用Redis。
• 对数据可靠性要求比较高的,建议用Redis。
3.使用注意事项:
• 不支持smp,一个instance只能使用一个core,合理分配单个实例的大小。
• 不要浪费扩容比较方便,支持配置热刷(不用重启实例能在线扩容)。
• 支持namespace
• 支持主从(全量同步时有可能导致全量镜像,对网络造成压力)
• 支持持久化(fork进程时有短暂服务终止,大内存会体现得很明显,根据其他互联网公司的经验,一般一个instance控制在10G左右比较好)
=====================Memcached==================
1.Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储健/值对的hashmap。其服务器端守护进程(daemon)是用C写的,但客户端可以用任何语言来编写,并用memcached协议与服务器守护进程进行通讯,实现数据缓存。
2.Memcached应用场合
• Memcached不是万能的,也不是使用在所有场合。
• 首先:Memcached是分布式的内存对象缓存,不需要“分布”,不需要“共享的”,或者规模小到只有一台服务器的应用,Memcached不仅不会带来任何好处,反而会拖慢系统效率。(使用Memcached内存并不会得到成百上千的读写速度提高,实际瓶颈在于网络连接,即使网络带宽满负荷,Memcahed服务器进程本身并不占用多少CPU资源)
• Memcached是使用内存来管理数据的,所以是易失的,当服务器重启或者Memcached进程中止数据都会丢失,所以Memcached不能用来持久保存数据。
• 在Memcached中可以保存的Item数量是没有限制的,只要内存足够
3. 用户接入注意事项:
• Memcached不善于处理大数据,一般我们不建议存放超过1M的对象在Memcached。如果有大于1M的数据,需要做优化。
• Memcached是缓存,可靠性差,但性能高。必须有容错机制,在Memcached出现错误时,有相应的补救措施。
• 公司环境下跨网段的访问,会出现较小概率的异常,导致无法get/set/delete数据到Memcached服务器。
相关文章推荐
- 实战Memcached缓存系统
- redis安装问题小结
- Redis偶发连接失败案例实战记录
- Redis和Memcached的区别详解
- 分割超大Redis数据库例子
- Redis总结笔记(一):安装和常用命令
- redis中修改配置文件中的端口号 密码方法
- Enterprise Library for .NET Framework 2.0缓存使用实例
- Redis和Memcache的区别总结
- PowerShell中编程清空IE缓存方法
- C#中缓存的基本用法总结
- Redis服务器的启动过程分析
- web 应用中常用的各种 cache详解
- 利用yum安装Redis的方法详解
- 为啥懒 Redis 是更好的 Redis
- wap开发中如何有效的利用缓存减少消息的传送量
- smarty缓存用法分析
- 引用全局程序集缓存内的程序集的方法
- asp Response.flush 实时显示进度