什么是NOSQL

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

什么是Redis

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

从mysql出发来认识redis

概念

 关系型数据库的一个常见用法是存储长期的报告数据,并将这些报告数据用作固定时间范围内的聚合数据。

收集聚合数据的常见做法是:先将各个行插入一个报告表里面, 之后再通过扫描这些行来收集聚合数据, 并更新聚合表中巳有的那些行。

图解redis为什么出现

一 分布式缓存redis概念

详细图解

一 分布式缓存redis概念

查询优化器:join,left join,子查询,依赖子查询进行复杂sql及排序的优化。

Redis和memcached和mysql之间的区别

一 分布式缓存redis概念

redis和memcached各有什么优势

内存管理机制进行比较

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

一 分布式缓存redis概念

Redis使用现场申请内存的方式来存储数据,并且很少使用free-list等方式来优化内存分配,会在一定程度上存在内存碎片。

优先查找那块内存是空闲的,找到则分配。【cpu内存连续的,java虚拟机的内存分配类似于redis,直接内存分配(指针碰撞)】

数据持久化方案比较

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

redis支持持久化操作。redis提供了两种不同的持久化方法来讲数据存储到硬盘里面

  • rdb:属于全量数据备份,备份的是数据
  • aof:append only if,增量持久化备份,备份的是指令 [如:set key, del key]

缓存数据过期机制比较

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

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

支持的数据类型

Memcached支持单一数据类型,[k,v]

redis支持五种数据类型。

redis作为数据库和作为内存缓存的两种使用方法

redis作为数据库的使用有什么优缺点

优点
  • 没有Scheme约束,数据结构的变更相对容易,一开始确定数据类型
  • 抗压能力强,性能极高,10万/qps
缺点
  • 没有索引,没有外键,缺少int/date等基本数据类型,
  • 多条件查询需要通过集合内联(sinter,zinterstore)   和连接间接实现
  • 开发效率低,可维护性不佳

redis作为缓存的使用,搭配数据库使用的两种方案

  • jedis整合使用方案        set key,value ["11","22"]  第一层在缓存进行查询,如果得到数据则直接返回,     第二层在数据库进行查询,并且刷新缓存,方便下次查询  ["33,"44"]
  • 作为mybatis/hibernate二级缓存使用方案,一级缓存:sqlSession,进程缓存,单次链接有效。

图解分析加redis前后的架构区别

一 分布式缓存redis概念