Redis基础--认识redis和对比同类型产品

一:redis定义与应用

 Nosql定义:NoSQL是不同于传统的关系数据库的数据库管理系统的统称。其两者最重要的区别是NoSQL不使用SQL作为查询语言。

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

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

Redis应用对象:微信(微信红包)、微博、淘宝、天猫、京东、唯品会  

二、同类型产品对比

  1. redis,memcached和MySQL三种数据库的对比的区别

 

 

数据库类型

数据存储类型

特色功能

MySQL

硬盘持久化

(传统关系型数据库)

库表类型存储

(库--表--数据行--数据类型)

支持ACID性质,主从复制

Memcached

内存缓存

(redis出现前的产品)

K/V存储

(单一key与value类型存储形式(string))

高性能多线程服务器

Redis

内存+硬盘持久化

(现代产品)

多种数据类型

(字符串,列表,集合,散列表,有序集合)

发布与订阅,主从复制,持久化,动态扩容,脚本操作

 

2.同为内存缓存产品,redis和memcached各自优势:

  • 内存管理机制

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

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

  •  数据持久化方案

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

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

                    一种是rdb形式, rdb:属于全量数据备份,备份的是数据

                    一种是aof形式,aof:append only if,增量持久化备份,备份的是指令   [如:set key, del key]  

  • 缓存数据过期机制  key,在一个小时之后过期,超过一个小时查数据就会查不到  key:"1",value:"2"

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

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

  • 支持的数据类型

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

2)redis支持五种数据类型:字符串,列表,集合,散列表,有序集合

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

 1)优点:

   没有Scheme约束,数据结构的变更相对容易,一开始确定数据类型,抗压能力强,性能极高,10万/qps

 2)缺点:

    没有索引,没有外键,缺少int/date等基本数据类型,多条件查询需要通过集合内联(sinter,zinterstore)和连接间接实现, 开发效率低,可维护性不佳

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

 1)jedis整合使用方案: 第一层在缓存进行查询,如果得到数据则直接返回,第二层在数据库进行查询,并且刷新缓存,方便下次查询            

2)作为mybatis/hibernate二级缓存使用方案,一级缓存:sqlSession,进程缓存,单次链接有效

 

你可能感兴趣的:(Redis,redis,Redis基础知识,缓存,redis入门)