刨析Redis和memcached和MySql之间的区别

从数据库类型、数据存储方式、特殊功能讲解Redis和memcached和Mysql的区别

分析为什么越来越的人抛弃memecached选择redis

在这里插入图片描述

作为同款功能的内存产品,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支持五种丰富的数据类型

结论:结合以上几点Redis优势较大,虽然内存存储方面有些不足,但影响不大

猜你喜欢

转载自blog.csdn.net/q736317048/article/details/113826937