- 水平切分:比如一张表当中有100万条数据,而每次在100万当中进行查询效率很低,就把这100万条数据拆分,每20万一张表,分成了5张表,在进行查询时分成5张分别查询,提高了效率。
- 垂直切分:比如一张表当中有200个字段,这样在进行查询时同样查询效率很低,就把200个字段每50个变成一张表,在进行查询时根据字段分别查询,提高了效率。
- 读写分离,服务器进行的读操作数量是远高于写操作的,所以可以把读服务器和写服务器分开,读服务器只能进行读操作,而写服务器可以进行读写操作。提高了效率
NoSQL不依赖业务逻辑关系存储,而是简单的用key-value模式存储,因此大大增加了业务的拓展能力。
NoSQL的特点:
- 不遵循SQL标准
- 不支持ACID(ACID:原子性,一致性,隔离性,持久性)
- 远超SQL的性能
NoSQL的适用场景:
- 对数据高并发的读写
- 海量数据的读写
- 对数据高拓展性的
NoSQL不适用的场景:
- 需要事务支持
- 基于SQL的结构化查询存储,处理复杂的关系,需要即席查询(即席查询(Ad Hoc)是用户根据自己的需求,灵活的选择查询条件,系统能够根据用户的选择生成相应的统计报表。即席查询与普通应用查询最大的不同是普通的应用查询是定制开发的,而即席查询是由用户自定义查询条件的。)
简单说就是:用不着SQL的和用了SQL也不行的情况,就可以考虑用NoSQL。
Redis
redis的特点:
- 支持持久化
- 除了支持Key-Value,还支持List,Set,Hash,Zset等等(这些数据类型都支持pop/push,add/remove,去交集并集差集等等操作,而且都是原子性)
- redis对于请求的处理是单线程加多路IO复用(就是当请求来临时先排入队列,队列当中当请求就绪时,单线程开始处理,这样可以使单线程一直在处理状态。)
多路IO复用有三种状态:select,poll,epoll - select:每次请求好了都需要看是不是redis的请求,而且只能同时看1024个
- poll:和select相比没有限制次数
- epoll:让请求自己本身说明自己是谁的请求。不需要查看
redis的应用场景
安装redis
https://blog.csdn.net/qq_31850627/article/details/109085845
安装完成后我们可以通过下面代码来查看是否创建成功
ps -ef | grep redis
systemd+ 220582 220564 0 19:40 ? 00:00:01 redis-server *:6379
root 224188 185650 0 20:05 pts/0 00:00:00 grep --color=auto redis