linux的学习总结
https://blog.csdn.net/qq_35919588/article/details/80426634
1,NoSql介绍
- NoSql(Not Only Sql):泛指非关系型数据库
- 主要是用来处理大型数据:
- 举个例子: 比如存放一个员工,员工的信息有很多属性,这些关系需要多个字段多张表进行存储,不如把这些数据存放在一个json字符串中比较方便,知识为了方便查看
- 在开发中查询的占比比较大,把一些不经常修改或者是不修改的数据存放在非关系数据库中,查询比较方便
- 主要用于大数据中,进行解析分析
- 分类:
- 键值(Key-Value)存储数据库
- 主要使用到hash表,一个特定的值和一个指针指向特定的数据
- 优点: 简单易部署
- 缺点: 只对部分数据进行查询或者更新的时候,效率就会显的低下
- 列存储数据库:
- 用来应对分布式存储的海量数据
- 价值对存在,就是键对应着多条数据
- 文档型数据库:
- 查询效率比较高,
- 对事物的支持不友好
- 比如:json的存储格式
- 图形数据库,图片 ,音频,视频,文件服务器:
- 使用灵活的图形模型,并且能够扩展到多个服务器上.
- NoSql没有标准的查询语言(标准的sql语句), 数据库查询需要制定数据库模型,
- 许多nosql数据库都有rest式的数据接口或者查询API
- 应用场景:
-
1 1、数据模型比较简单;
2 2、需要灵活性更强的IT系统;
3 3、对数据库性能要求较高;
4 4、不需要高度的数据一致性; nosql 弱化事务 没有事务 当当购物车
5 5、对于给定key,比较容易映射复杂值的环境(redis)。
6
点击查看
2,redis学习总结:
该笔记借鉴的作者是:
https://blog.csdn.net/u012562943/article/details/49514341[ 详解 ]
- redis使用C语言写的,开源的,支持网络交互的,基于内存持久化的Key-Value数据库
- redis数据结构
- 字符串(strings)
- 字符串类别(lists)
- 字符串集合(sets)
- 有序字符串集合(sorted sets)
- 哈希(hashes)
- redis持久化---两种:
- RDB(Redis DataBase):redis数据库
- 将数据存放在磁盘中
- AOF(Append Only File): 仅附加文件
- 将所有的指令存放在文件中,下次直接执行文件中的指令就可以恢复数据
- 两种方式可以同时使用,redis重启优先会AOF的方式恢复数据,AOF的方式恢复数据完整度高.
- 也可以不适用redis,redis就是一个内存数据库;
- redis持久化 ----RDB:
- 是将redis中某一时刻的数据持久化到磁盘中,用快照的方式持久化,过程如下
- 先将数据写入到一个临时文件中,待持久化过程结束,将这个临时文件替换上次持久化好的文件
- RDB单独创建一个子进程来持久化,而主进程是不会进行任何IO操作的,确保redis的性能
- 优点: 处理大量数据,恢复不是特别重要的数据,RDB方式比AOF更加高效
- redis持久化----AOF:
- AOF持久化策略默认每秒钟把缓存中的写指令记录到磁盘中一次, redis可以保持很好的处理性能,及时redis故障也只是缺失最后一秒的数据
- 如果在追加日志时,恰好遇到磁盘空间满...一些突发情况导致日志写入不完整, redis提供了redis-check-aof工具,可以进行对日志的修复
- 因为采用了追加方式,如果不做任何处理的话,AOF文件越来越大,为此,redis提供了AOF文件重写机制当AOF文件超过阈值时,redis就会启动AOF文件的内容压缩只保留可以恢复数据的最小指令集
- 例子: 调用多少次指令就存放多少次指令,这样效率比较低,可以把这些指令存放到一个set集合集合中,过滤掉一些重复的指令,只保留数据最终的存出结果,这就是重写机制的原理
- AOF重写时, 任然采用的是先写临时文件,全部完成后再替换的流程;
- AOF比较好用的地方:
- 如果说不小心删除了redis中的所有数据,此时可以通过AOF的持久化,暂停redis,将AOF文件指令中的失误指令删除,重启的时候会重新执行AOF文件,这样数据就恢复了,如果说AOF已经被重写了就不能采取上边的操作了
- 缺点:在同等数据规模下,AOF文件要比RDB文件的体积大,并且AOF方式的恢复比RDB要慢
- 重写AOF文件获取最小指令集: BFREWRITEAOF
- redis中AOF常见的问题:
-
1 1.备份被写坏的AOF文件
2 2.运行redis-check-aof –fix进行修复
3 3.用diff -u来看下两个文件的差异,确认问题点
4 4.重启redis,加载修复后的AOF文件
如果出现了AOF文件写坏
- redis持久化----AOF重写
- 执行流程:
- 重写的时候redis创建一个"重写的子进程",
- 这个子进程会读取现有的AOF文件,
- 将文件中的指令分析解压并写入到一个临时的文件中.
- 此时主进程会将新接收的写指令累计在缓存区中,一遍继续写入到原有的AOF文件中
- "重写子进程"完成工作后,会给父进程发一个信号,父进程将会把内存中缓存的指令追加到新AOF中
- 追加完成后,redis就会用新AOF文件替换AOF文件之后在有新的写指令追加到新的AOF文件中
- 主从用法(待续):
-
Redis和memcahed对比:
- 共同点:
- 底层都是用C语言编写,都是基于key-value内存存储
- 不同点:
学习总结
原文:https://www.cnblogs.com/Consola/p/11901957.html