一、Redis概述
1 NoSQL介绍
1.1 NoSQL由来
任何技术的出现都是一步一步演进出来的。
1. 在互联网诞生初期,一个网站一个应用访问量都不大, 使用单机Mysql数据库可以应对。
2. 随着用户的不断增多,单机MySQL可能无法放下,服务器也可能承受不住一个网站,大多数的情况都是查询,为了减少数据库的压力,引入读写分离策略,让主数据库处理事务性增、改、删操作,而从数据库处理SELECT查询操作。
通过读写分离的方式,解决问题。
3. Mysql读的问题得到了缓解,写的压力依然存在,开始通过分库分表和MySQL集群来解决写的问题。
4. 当前,数据量越来越大、数据类型也越来越复杂,Mysql数据库在面对数据量很多、变化很大数据,如大文本字段、图片等,MySQL效率就低了,并且扩展性差,大数据量场景下IO压力大,结构更改困难。如果有一种数据库专门来存储此类数据,分担读取数据的压力,MySQL压力就会变得很小。
NoSQL数据库就应运而生,可以很好的解决上述问题。
1.2 什么是NoSQL
NoSQL = Not Only SQL 不仅仅是SQL
泛指非关系型数据库,对应对比关系型数据库,NoSQL没有sql语句使用,不需要设计表结构,没有表关系。
很多数据类型如:用户的个人信息,社交网络,地理位置,这些数据类型的存储不需要一个固定的模式,类似于Map<String,Object>使用键值对来控制。
1.3 NoSQL的特点
1. 方便扩展(数据之间没有关系,很好扩展)
2. 大数据量高性能(Redis一秒写8万次,读取11万次,NoSQL缓存记录级,是一种细粒度的缓存,性能比较高)
3. 数据类型多样性(不需要事先设计数据库,如果是数据量特别大的表,设计繁琐)
4. 传统RDBMS 与 NoSQL
RDBMS: - 结构化数据 - 结构化查询语句SQL - 数据和关系都存储在单独的表中 - 数据操纵语言,数据定义语言 - 严格的一致性 - 基础事务 NoSQL: - 没有固定的查询语言 - 键值对存储、列存储、文档存储、图关系数据库 - 最终一致性 - CAP定理和BASE理论 - 高性能,高可用,高可扩
1.4 NoSQL的四大分类
2 Redis概述
2.1 Redis是什么
1. Redis(Remote Dictionary Server 远程字段服务)是一个开源的使用ANSI C语言编写、支持网
络、内存亦可持久化的key-value数据库,并提供多种语言的API。
2. Redis是一个key-value存储系统,它支持存储的value类型相对更多,包括string、list、set、
zset(sorted set --有序集合)和hash。这些数据结构都支持push/pop、add/remove及取交集并
集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,Redis支持各种不同方式的
排序。为了保证效率,数据都是缓存在内存中,Redis会周期性的把更新的数据写入磁盘或者把修
改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
3. Redis提供了java、C/C++、PHP、JavaScript、Perl、Object-C、Python、Ruby、Erlang等客户端,使用很方便。
2.2 Redis能干嘛
1. 读写效率高,用于高速缓存
2. 发布,订阅消息(消息通知)
3. 地图信息分析
4. 活动排行榜或计数
5. …………
2.3 Redis特点
1. 多样的数据类型:Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,
hash等数据结构的存储。
2. Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使
用。
3. Redis的所有操作都是原子性的。
4. 支持主从复制及集群。