Redis vs Memcached,Memcached和Redis都是成熟和非常受欢迎的Nosql数据库开源项目,想要了解Redis与Memcached哪一个更好用,就必须要了解一下Redis与Memcached的区别与好处都有哪些?
1:论Redis与Memcached的年代历史
Memcached最初由Brad Fitzpatrick于2003年为LiveJournal网站开发。从那以后,Memcached被重写为C(原来的实现是Perl)并放入公有领域,它已经成为现代Web应用程序的基石。目前Memcached的开发重点在于稳定性和优化,而不是增加新功能。
Redis由Salvatore Sanfilippo于2009年创建,Sanfilippo仍然是该项目的首席开发人员。Redis有时被描述为“Memcached on steroids”,考虑到Redis的部分内容是为了响应使用Memcached而获得的经验而建立的,这并不令人惊讶。Redis具有比Memcached更多的功能,因此功能更强大,更灵活。
2:Redis与Memcached的读写速度分析
由于Redis只使用单线程,而Memcached可以使用多线程,所以平均每一个核上Redis在存储小数据时比Memcached性能更高。而在100k以上的数据中,Memcached性能要高于Redis,虽然Redis最近也在存储大数据的性能上进行优化,但是比起Memcached,还是稍有逊色。
4:Redis与Memcached的安全性分析
虽然Memcached是多线程的,可以利用更多的计算机资源来轻松的扩展,但是redis也可以通过集群来扩展,补充了这个缺点,虽然维护麻烦点,但是更加安全,redis可以将数据持久化到本地磁盘中,而Memcached则不可以,一旦Memcached挂掉了,内存中的数据就会丢失。
5:Redis与Memcached数据存储的多样性分析
redis可以存储普通字符串,列表,集合,hash表,链表等结构的数据,并能轻松对数据进行排序等操作,而Memcached则只能存储普通字符串类型,并且不能进行这种操作。
6:Redis与Memcached的数据淘汰机制
Redis可以自动删除掉最近不常用的数据,以减少计算机内存的开销,包括这种机制之外,还有以下几种机制:
noeviction:默认策略,不淘汰,如果内存已满,添加数据是报错。
allkeys-lru:在所有键中,选取最近最少使用的数据抛弃。
volatile-lru:在设置了过期时间的所有键中,选取最近最少使用的数据抛弃。
allkeys-random: 在所有键中,随机抛弃。
volatile-random: 在设置了过期时间的所有键,随机抛弃。
volatile-ttl:在设置了过期时间的所有键,抛弃存活时间最短的数据。
而Memcached只有一种机制,就是删除掉最近不常用的数据。