分享

memcache与redis有何区别,redis有哪些优势呢?

 昵称11935121 2018-03-09

首先,Memcached和Redis都是著名的、广泛使用的Nosql数据库。

1. Memcached简介

Memcached 免费开源、高性能、分布式内存对象缓存系统,主要用于作为关系数据库缓存,用来加速应用程序的访问,减轻主数据库的压力。Memcached 是一个内存key-value存储,主要存储字符串或者小的对象等数据库调用,API调用或者页面渲染结果的数据。Memcached立足于简单、快速部署可以解决大型数据库缓存的各种问题。

Memcached同时又非常强大,支持包括C/C++, PHP, Java, Python, Ruby, Perl, Erlang, Lua等语言调用。Memcached在业界广泛应用,除了开发者LiveJournal自己外还有Wikipedia、Flickr、Bebo,WordPress.com,Craigslist、 Mixi也在使用。

2. Redis简介

Redis同样是一个免费开源的key-value存储系统。可以用做数据库,缓存和消息代理使用。Redis支持比较多的数据类型,包括:字符串、哈希 表、链表、集合、有序集合。

Redis使用C语言开发,支持绝大多数类Unix系统,在Linux,BSD、Unix,OS X等符合POSIX的系统下无需任何依赖就能使用。官方建议在线上应用的话最好在Linux下部署。在Windows下有非官方微软自己开发和维护的的Redis。

Redis和Memcached对比

1、性能对比

由于Redis广泛使用的版本只使用单核,而Memcached可以使用多核,所以平均每一个核上Redis在存储小数据时比Memcached性能更高。而在100k以上的数据中,Memcached性能要高于Redis,虽然Redis也升级新版本3.0以上支持多核,但是3.0以上版本除了增加很多功能外,性能还不如老版本。

这是是相关性能测试对比图:

2、内存使用效率对比

使用简单的key-value存储的话,Memcached的内存利用率更高,而如果Redis采用hash结构来做key-value存储,由于其组合式的压缩,其内存利用率会高于Memcached。

3、Redis支持服务器端的数据操作

Redis相比Memcached来说,拥有更多的数据结构和并支持更丰富的数据操作,通常在Memcached 里,你需要将数据拿到客户端来进行类似的修改再set回去。这大大增加了网络IO的次数和数据体积。在Redis中,这些复杂的操作通常和一般的 GET/SET一样高效。所以,如果需要缓存能够支持更复杂的结构和操作,那么Redis会是不错的选择。

4、Redis的持久化和主从架构

Redis虽然内存的存储系统,但是支持内存数据持久化,而且提供两种主要的持久化策略:RDB快照和AOF日志。使得Redis可以保存比较重要的数据不怕断电后数据丢失,同时基于数据持久化的分布式主从架构也提升了Redis的可用性和性能问题。

作为对比,虽然memecached的虽然也支持通过客户端的分布式存储架构。

关于memcached的命中率

缓存的命中率命中:直接从缓存中get读能取到想要的数据。 不命中:缓存中没有想要的数据,还需要到数据库进行一次查询才能读取到想要的数据。

所以命中率的高低会直接影响memcached性能。那么要如何进行优化,提高命中率呢?

优化设置项目:

1、默认单个item最大数据是1MB,超过1MB数据不予存储,常量POWER_BLOCK 1048576 进行控制,它是默认的slab大小

2、要根据实际业务情况预估一些参数大小,适当的调整内存页大小和增长因子。

设定参数:

-f:chunk增长因子,默认1.25。

-n:指定最小chunk的key+suffix+value大小。

Item (no cas) 48,Item(cas) 56。

当指定-C选项时,最小chunk为-n指定大小+48;当没有-C选项时,最小chunk为-n指定大

3、极端情况下,你可以禁止LRU(最近最少使用算法)试试。通过“-M”参数可以禁止LRU。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多