一、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的四大分类
分类 | 常见数据库 | 典型应用场景 | 优点 | 缺点 |
---|---|---|---|---|
键值对 (key- value) |
Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB |
内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等 等。 |
查找速度快 | 数据无结构 化,通 常只被当作字符串 或者二进制数据 |
文档型 数据库 |
CouchDB, MongoDB |
Web应用(与Key- Value类似, Value是结构化 的,不同的是数据 库能够了解Value 的内容) |
数据结构要求不 严格,表结构可 变,不需要像关 系型数据库一样 需要预先定义表 结构 |
功能相对局限 |
列存储 数据库 |
Cassandra, HBase, Riak |
分布式的文件系统 | 查找速度快,可 扩展性强,更容 易进行分布式扩 展 |
查询性能不高,而 且缺乏统一的查询 语法。 |
图形数 据库 |
Neo4J, InfoGrid, Infinite Graph |
社交网络,推荐系 统等。专注于构建 关系图谱 |
利用图结构相关 算法。比如最短 路径寻址,N度 关系查找等 |
很多时候需要对整 个图做计算才能得 出需要的信息,而 且这种结构不太好 做分布式的集群方 案。 |
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. 支持主从复制及集群。