• 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已经支持了分布式存储功能。
    一起干同样的事叫集群,分工合作的叫分布式

  • 相关阅读:
    SpringIoC和SpringMVC的快速入门
    Swoole引擎原理的快速入门干货
    Windowns 10打开此电脑缓慢问题的一种解决办法
    CentOS下使用Postfix + Dovecot + Dnsmasq搭建极简局域网邮件系统
    CentOS7.2 创建本地YUM源和局域网YUM源
    CentOS 7.2 安装配置Samba服务器
    Zookeeper 日志输出到指定文件夹
    MySQL索引优化-from 高性能MYSQL
    Transaction事务注解和DynamicDataSource动态数据源切换问题解决
    Redis使用经验之谈
  • 原文地址:https://www.cnblogs.com/ldq1996/p/8513218.html
Copyright © 2020-2023  润新知