Redis详解

一.什么是nosql

NoSQL是不同于传统的关系数据库的数据库管理系统的统称。其两者最重要的区别是NoSQL不使用SQL作为查询语言。NoSQL数据存储可以不需要固定的表格模式。NoSQL是基于键值对的,可以想象成表中的主键和值的对应关系。
 

二.redis概念

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings)、散列(hashes)、 列表(lists)、 集合(sets)、 有序集合(sorted sets)等。

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

Redis详解

四.redis和memcached优势对比

1.内存管理机制

(1)Memcached默认使用Slab Allocation机制管理内存,其主要思想是按照预先规定的大小,将分配的内存分割成特定长度的块以存储相应长度的key-value数据记录,以完全解决内存碎片问题。空闲列表进行判断存储状态(类似于java虚拟机对象的分配,空闲列表)

(2)Redis使用现场申请内存的方式来存储数据,并且很少使用free-list等方式来优化内存分配,会在一定程度上存在内存碎片(CPU内存是连续的,类似于Java虚拟机对象的分配,直接内存分配(指针碰撞))

2.数据持久化方案

(1)memcached不支持内存数据的持久化操作,所有的数据都以in-memory的形式存储。

(2)redis支持持久化操作。redis提供了两种不同的持久化方法来将数据存储到硬盘里面,第一种是rdb形式,另一种是aof形式

rdb:属于全量数据备份,备份的是数据

aof:apend only if,增量持久化备份,备份的是指令

3.缓存过期机制

(1)Memcached在删除失效主键时也是采用的消极方式,即Memcached内部也不会监视主键是否失效,而是在通过Get访问主键时才会检查其是否已经失效

(2)Redis定时、定期等多种缓存失效机制,减少内存泄漏

4.支持的数据类型

(1)Memcached支持单一数据类型,key-value

(2)reids支持五种数据类型