本人已参与「新人创作礼」活动,一起开启掘金创作之路。
前言
大家好,我是掘金新用户小钻风头领,今天是我正式更文的第五天;
发展史
1.单机MySQL 原始模型
出现的问题: 1.数据量大 2.数据的索引(B+Tree),一个机器放不下 3.访问量(读写混合),一个服务器受不了
解决:
2.使用Memcached+Mysql+垂直拆分(读写分离),多加数据库
3.分库分表+水平拆分+MySQL集群
MySQL的引擎:
MyISAM: 表锁
Innodb: 行锁
现在的结构
NoSql
1.什么是NoSql
非关系型数据库:存储一些不需要固定格式的数据 不需要过多的操作就可以横向扩展 关系型数据库:比如行和列
2.为什么要用
用户的个人信息,社交网络,地理位置,用户自己产生的数据,用户的日志爆发增长, 这个时候就需要使用Nosql,
3.NoSql的特点
解耦 1.方便扩展(数据之间没有关系) 2.大数据量高性能(Redis一秒可以写8万次,读11万次,NoSql的缓存记录级是一种细粒度的缓存,性能会更高) 3.数据类型多样性(不需要事先设计数据库,随取随用)
4.传统的数据库和NoSql
传统的: 结构化组织 SQL 数据和关系都存储在单独的表中 DDL DQL 严格的一致性 基础的事务 NoSql: 不仅仅是数据 没有固定的查询语言 键值对存储,列存储,文档存储,图形数据库 最终一致性 CAP和BASE(异地多活) 高性能,高可用,高可扩
5.3V加3高
3V: 1.海量的(Volume)数据 2.多样的Variety 3.实时的Velocity
3高: 1.高并发 2.高可扩(水平拆分,) 3.高性能
nosql数据模型
nosql四大分类
1键值对存储,2列存储,3文档存储,4图形数据库
1.KV键值对: Map<String,Object>
2.文档型: bson格式,和JSON一样 MongoDB是一个基于分布式文件存储的数据库,主要用来处理大量文档 并且是一个介于关系型数据库和非关系性数据库之间的产品 而且是非关系型数据库中功能最丰富,最像关系型数据库的
3.列存储: Hbase 分布式文件系统
4.图形数据库: 社交关系图
CAP
BASE
Redis入门
1.是什么?
是一个开源的使用ANSI C语言编写的,支持网络,可基于内存亦可持久化的日志型,Key-Value数据库,并提供多种语言的API。
2.能做什么?
1.内存储存,持久化 2.效率高,可以用于告诉缓存 3.发布订阅系统 4.地图信息分析 5.计时器,计数器(浏览量)
3.特性
1.持久化 2.集群 3.事务
4.Redis安装
Windows:
GitHub下载

1.开启服务
Linux:
redis的基本知识
redis数据库
redis默认有16个数据库,默认使用的是第一个,可以使用Select切换
select 3 #切换数据库
DBSIZE #查看大小
Keys* #查看所有的key
flusall #清空全部
flusdb #清空当前库
Redis是单线程的
基于内存操作,瓶颈是基于机器的内存和网络带宽
为什么单线程快
多线程(CPU会上下文切换)CPU>内存>硬盘 核心是redis是将所有的数据放在内存中,所以使用单线程,对于内存来说没有上下文切换,多次读写都是在一个CPU上的
RedisKey
EXISTS key #是否有此key
move key 1 #移动key 到某个库
del key #移除key
EXpire key s #设置key过期时间
ttl key #查看剩余时间
type key #查看什么类型
APPEND key "xxx" #追加字符串