• redis 与 memcached 的区别


    相同点

    都是基于内存的数据存储系统
    redis 和 memcached 的区别

    1.1redis 支持 丰富的数据类型 string hash list set 有序集合

    1.2.memcached 只支持 string

    2.1 redis支持持久化操作

    RDB快照
    Redis支持将当前数据的快照存成一个数据文件的持久化机制,即RDB快照。
    RDB有他的不足,就是一旦数据库出现问题,那么我们的RDB文件中保存的数据并不是全新的,从上次RDB文件生成到Redis停机这段时间的数据全部丢掉了。在某些业务下,这是可以忍受的。
    AOF日志
    AOF日志的全称是append only file,它是一个追加写入的日志文件。
    与一般数据库的binlog不同的是,AOF文件是可识别的纯文本,它的内容就是一个个的Redis标准命令。

    对于一般性的业务需求,建议使用RDB的方式进行持久化,原因是RDB的开销并相比AOF日志要低很多,
    对于那些无法忍数据丢失的应用,建议使用AOF日志。

    2.2 memcached 不支持

     

    3.1 内存的使用效率对比

    如何是使用简单的key-value存储 memcached的利用率更高,但如果 redis 采用 hash 存储,由于
    其组合式的压缩,其内存利用率会高于 memcached

    4.性能对比

    redis只使用单核,memcached是多核,所以平均每个核上 redis在存储小数据时性能更高。
    而在100k以上的数据时, memcached的性能会高于 redis

    5.内存的管理机制不同

    在Redis中,并不是所有的数据都一直存储在内存中的。
    当物理内存用完时,Redis可以将一些很久没用到的value交换到磁盘。
    Redis只会缓存所有的key的信息,如果Redis发现内存的使用量超过了某一个阀值,将触发swap的操作,
    Redis根据“swappability = age*log(size_in_memory)”计算出哪些key对应的value需要swap到磁盘。
    然后再将这些key对应的value持久化到磁盘中,同时在内存中清除。
    这种特性使得Redis可以保持超过其机器本身内存大小的数据。

    Memcached默认使用Slab Allocation机制管理内存
    其主要思想是按照预先规定的大小,将分配的内存分割成特定长度的块以存储相应长度的key-value数据记录,以完全解决内存碎片问题。
    Slab Allocation机制只为存储外部数据而设计,也就是说所有的key-value数据都存储在Slab Allocation系统里,
    Memcached的内存管理制效率高,而且不会造成内存碎片,但是它最大的缺点就是会导致空间浪费。

    6.集群管理不同

    Memcached是全内存的数据缓冲系统
    Redis虽然支持数据的持久化,但是全内存毕竟才是其高性能的本质。
    Memcached本身并不支持分布式,因此只能在客户端通过像一致性哈希这样的分布式算法来实现
    Redis更偏向于在服务器端构建分布式存储。最新版本的Redis已经支持了分布式存储功能。
    一起干同样的事叫集群,分工合作的叫分布式

  • 相关阅读:
    Android ActivityGroup的使用代码将子activty 的layout加入到主activity中
    ERROR: Application requires API version 10. Device API version is 8
    简单实现Android实现九宫格
    继承中new 与 override的作用
    Sql server 数量累计求和
    Android 应用程序窗体显示状态操作(requestWindowFeature()的应用)
    UDP传输错误 无法找到程序集“client, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
    堆与栈的区别
    Decorator模式
    时间为O(1)删除节点的代码
  • 原文地址:https://www.cnblogs.com/ldq1996/p/8513218.html
Copyright © 2020-2023  润新知