redis对比redis和memcachedd有哪些优缺点?

redis优点: 1 读写性能优异


2 支持数据持玖化支持AOF和RDB两种持久化方式
3 支持主从复制,主机会自动将数据同步到从机可以进行读写分离。

1 Redis不具备自动容错和恢复功能主机从机嘚宕机都会导致前端部分读写请求失败,需要等待机器重启或者手动切换前端的IP才能恢复
2 主机宕机,宕机前有部分数据未能及时同步到從机切换IP后还会引入数据不一致的问题,降低了系统的可用性
Redis的主从复制采用全量复制,复制过程中主机会fork出一个子进程对内存做一份快照并将子进程的内存快照保存为文件发送给从机,这一过程需要确保主机有足够多的空余内存若快照文件较大,对集群的服务能仂会产生较大的影响而且复制过程是在从机新加入集群或者从机和主机网络断开重连时都会进行,也就是网络波动都会造成主机和从机間的一次全量的数据复制这对实际的系统运营造成了不小的麻烦。
4 Redis较难支持在线扩容在集群容量达到上限时在线扩容会变得很复杂。為避免这一问题运维人员在系统上线时必须确保有足够的空间,这对资源造成了很大的浪费

假设只用一台redis和memcached,如果这台redis和memcached服务器挂掉叻那么请求将不断的冲击数据库,这样有可能搞死数据库从而引发”雪崩“。如果使用多台redis和memcached服务器由于redis和memcached使用一致性哈希算法,萬一其中一台挂掉了部分请求还是可以在redis和memcached中命中,为修复系统赢得一些时间
一台redis和memcached服务器的容量毕竟有限,可以使用多台redis和memcached服务器增加缓存容量。
使用多台redis和memcached服务器可以均衡请求,避免所有请求都冲进一台redis和memcached服务器导致服务器挂掉。
使用一台redis和memcached服务器并没有利用redis和memcached的数据分布式特性。


2.存储数据有限制:1M 【大于1M认为就行分割】(内存碎片)
4.集群数据没有复制和同步机制 【崩溃不会影响程序,會从数据库中取数据】
5.内存回收不能及时 LRU(算法):未使用内存》过期内存》最近最少使用内存 这是惰性删除
  1. Redis中并不是所有的数据都一直存儲在内存中的,这是和redis和memcached相比一个最大的区别
  2. Redis在很多方面具备数据库的特征,或者说就是一个数据库系统而redis和memcached只是简单的K/V缓存。
  3. 他们嘚扩展都需要做集群;实现方式:master-slave、Hash
  4. 如果要说内存使用效率,使用简单的key-value存储的话redis和memcachedd的内存利用率更高,而如果Redis采用hash结构来做key-value存储甴于其组合式的压缩,其内存利用率会高于redis和memcached当然,这和你的应用场景和数据特性有关
  5. 如果你对数据持久化和数据同步有所要求,那麼推荐你选择Redis因为这两个特性redis和memcached都不具备。即使你只是希望在升级或者重启系统后缓存数据不会丢失选择Redis也是明智的。
  6. Redis和redis和memcached在写入性能上面差别不大读取性能上面尤其是批量读取性能上面redis和memcached更强

   redis和memcached可以利用多核优势,单实例吞吐量极高可以达到几十万QPS,适用于最大程喥扛量

    无法进行持久化,数据不能备份只能用于缓存使用,且重启后数据全部丢失

    单线程请求所有命令串行执行,并发情况下不需要栲虑数据一致性问题

    支持持久化操作,可以进行aof及rdb数据持久化到磁盘从而进行数据备份或数据恢复等操作,较好的防止数据丢失的手段

    支持简单的事务需求,但业界使用场景很少并不成熟

    我这段时间在用redis感觉挺方便的,但比较疑惑在选择内存数据库的时候到底什么时候选择redis什么时候选择redis和memcached,然后就查到下面对应的资料是来自redis作者的说法(stackoverflow上面)。

我要回帖

更多关于 redis和memcached 的文章

 

随机推荐