memcached与redis有什么区别?

提问者:帅平 问题分类:面试刷题
memcached与redis有什么区别?
1 个回答
宁愿短发披肩
宁愿短发披肩
memcached和redis的区别:
1、Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,zset,hash等数据结构的存储而;memcache只支持简单数据类型,需要客户端自己处理复杂对象。
2、Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用;(PS:持久化在rdb、aof)。
3、由于Memcache没有持久化机制,因此宕机所有缓存数据失效Redis配置为持久化,宕机重启后,;将自动加载宕机时刻的数据到缓存系统中。具有更好的灾备机制。
4、Memcache可以使用Magent在客户端进行一致性hash做分布式Redis支持在服务器端做分布式;(PS:Twemproxy/Codis/Redis-cluster多种分布式实现方式)
5、Memcached的简单限制就是键(key)和Value的限制最大键长为250个字符可以接受的储存数;据不能超过1MB(可修改配置文件变大),因为这是典型slab 的最大值,不适合虚拟机使用。而Redis的Key长度支持到512k。
6、Redis使用的是单线程模型,保证了数据按顺序提交Memcache需要使用cas保证数据一致性;CAS(Check and Set)是一个确保并发一致性的机制,属于“乐观锁”范畴;原理很简单:拿版本号,操作,对比版本号,如果一致就操作,不一致就放弃任何操作cpu利用。由于Redis只使用单核,而Memcached可以使用多核,所以平均每一个核上Redis在存储小数据时比Memcached性能更 高。而在100k以上的数据中,Memcached性能要高于Redis 。
7、memcache内存管理:使用SlabAllocation原理相当简单,预先分配一系列大小固定的组,然后;根据数据大小选择最合适的块存储。避免了内存碎片。(缺点:不能变长,浪费了一定空间)memcached默认情况下下一个slab的最大值为前一个的1.25倍。
8、redis内存管理:Redis通过定义一个数组来记录所有的内存分配情况,Redis采用的是包装的;malloc/free,相较于Memcached的内存 管理方法来说,要简单很多。由于malloc 首先以链表的方式搜索已管理的内存中可用的空间分配,导致内存碎片比较多
发布于:4周前 (04-21) IP属地:
我来回答