文章目录
Redis
1. NoSQL 概述
0)架构的演化
- 单机存储, 数据量比较小的时候。
- 单机存储不够(Memcached + MySQL + 垂直拆分)
- MySQL主从读写分离
- 分库分表 + 水平拆分 + MySQL集群
1) NoSQL是什么?
Not Only SQL
2) NoSQL 能干什么?
- 容易扩展,去掉关系数据库的关系型特性。数据之间没有关系, 在架构层面带来了可扩展的能力。
- 大数据量,高性能
- 多样灵活的数据模型: NoSQL无需实习那为要存储的数据建立字段,随时可以存储自定义的数据格式。而在数据关系数据库里,增删字段是一件非常麻烦的事情,特别是非常大数据量的表。
- 传统数据库和非关系型数据库的区别
- RDBMS
- 高度组织化结构化数据
- 结构化查询语言
- 数据和关系都存储在单独的表中
- 数据操纵语言,数据定义语言
- 严格的一致性
- 基础事务
- NoSQL
- 代表者不仅仅是SQL
- 没有声明性查询语言
- 没有预定义的模式
- 键-值对存储,列存储,文档存储,图形数据库
- 最终一致性,而非ACID属性
- 非结构化和不可预知数据
- CAP
- 高性能,高可用和课伸缩性
- RDBMS
3) 现在数据特性和需要的应对技术
数据: 海量, 多样, 实时
技术: 高并发,高可扩, 高性能
4)数据模型
- KV
- BSON
- 列族
- 图形
5)NoSQL数据库大的四大分类
- KV键值(常用)
- 新浪: BerkeleyDB + redis
- 美团: redis + tair
- 阿里,百度: memcache + redis
- 文档型数据库(BSON格式比较多)
- CouchDB
- MongoDB: 是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之间的产片,是非关系数据库中功能最丰富,最像关系数据库的。
- 列存储数据库
- Cassandra, HBase
- 分布式文件系统
- 图关系数据库
- 关系图: 社交网络,广告推荐系统
- 社交网络,推荐系统。专注与构建关系图谱
- Neo4J,InfoGrid
- 四者的对比
6) 分布式数据库中CAP原理和BASE
- 传统数据库 A(Atomicity)C(Consistency)I(Isolation)D(Durability)原则
- C(Consistency)A(Availability)P(Partition Tolerance)
- CAP 只能实现2个,需要牺牲一个方面, CAP3进2, 需要有权衡和取舍
- 经典CAP图
- BASE
- 分布式 + 集群
2. Redis介绍
1) Redis 是什么
Redis : Remote Dictionary Server(远程字典服务器)。 是完全开源免费,用C语言编写的,遵守BSD协议,是一个高性能的(k-v)分布式内存数据库,基于内存运行并支持持久化的数据库,是当前最热门的NoSQL数据库之一,也被人们称为数据结构服务器。
Redis有一下三个特点:
- 支持数据持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用
- 不仅仅支持简单的k-v类型的数据,同时还提供 list, set, zset, hash等数据结构的存储
- 支持数据的备份, master-slave模式的数据备份。
2) Redis能干什么
- 内存存储和持久化: redis支持异步将内存中的数据写到硬盘上,同时不影响继续服务
- 去最新N个数据的曹祖,如:可以将最新的10条评论的ID放在Redis的List集合里面
- 模拟类似于HttpSession这种需要设定过期时间的功能
- 发布, 订阅系统消息
- 定时器,计数器
3) Redis基本知识
- 默认有16个库, select + num 选择对应的库
- DBSIZE 显示有多少个key
- keys * 显示所有的key
- flushdb: 清空当前库
- flushall:清空所有库
- 统一密码管理,16个库都是同样密码,要么都OK,要么一个也连接不上。
- Redis所有从0 开始
- 默认端口是6379
4) Redis数据类型
Redis五大数据类型:
- String
- List
- Set
- Hash
- ZSet(Sorted set)
Redis命令参考网址
http://redisdoc.com/