缓存开源软件使用的原则和建议

来源:互联网 发布:字典里有哪些网络用语 编辑:程序博客网 时间:2024/05/17 15:21

=====================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服务器。

0 0
原创粉丝点击