Redis学习笔记(1):剖析Redis和memcached和mysql之间的区别

  • 从数据库类型、数据存储方式、特殊功能讲解Redis和memcached和mysql的区别
    Redis学习笔记(1):剖析Redis和memcached和mysql之间的区别
  • 作为同款功能的内存缓存产品,redis和memcached各有什么优势
    • 内存管理机制
      • Memcached默认使用Slab Allocation机制管理内存,其主要思想是按照预先规定的大小, 将分配的内存分割成特定长度的块 以存储相应长度的key-value数据记录,以完全解决内存碎 片问题。空闲列表进行判断存储状态,【类似于Java虚拟机对象的分配,空闲列表】
      • Redis使用现场申请内存的方式来存储数据,并且很少使用free-list等方式来优化内存分配,会在一定程度上存在内存碎片,【CPU内存是连续,类似于Java虚拟机对象的分配,直接内存分配(指针碰撞)】
    • 数据持久化方案
      • memcached不支持内存数据的持久化操作,所有的数据都以in-memory的形式存储。
      • redis支持持久化操作。redis提供了两种不同的持久化方法来讲数据存储到硬盘里面, 第一种是rdb形式,一种是aof形式
        • rdb:属于全量数据备份,备份的是数据
        • aof:append only if,增量持久化备份,备份的是指令
    • 缓存数据过期机制
      • 概念:key,设计一个小时之后过期,超过一个小时查数据就会查不到
      • Memcached 在删除失效主键时也是采用的消极方法,即 Memcached 内部也不会监视主键是否失效,而是在通过 Get 访问主键时才会检查其是否已经失效
      • Redis 定时、定期等多种缓存失效机制,减少内存泄漏
    • 支持的数据类型
      • Memcached支持单一数据类型,[k,v]
      • redis支持五种数据类型