非关系型数据库
关系型数据库(NoSQL)是为了解决关系型数据库为了维护ACID(原子性、一致性、隔离性、持久性)而导致读写性能比较差的现象而生,非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合
NoSQL格式灵活、存取迅速且成本低廉,数据都是缓存在内存中,有时间限制。
Redis
Redis是一个基于C语言的NoSQL,它使用Key-Value方式储存数据,支持String、List、Set、Sorted Set,Hash等数据类型
String:String数据结构的key-value类型的,value值可以是数字。
List:就是一个链表,支持反向查找和遍历,可以用来实现列表排行等功能。
Set:类似于List,但它可以实现自动排重。
Sorted Set:Sorted Set的数据结构类似于Set,不同的是Sorted的每个成员都分配了一个值(Score)对其中的成员进行排序。
Hash:Hash是一个string类型的field和value的映射表,适合存储各类信息。
Redis优点
1.速度快:因为NoSQL的特性Redis中的数据缓存在主存中。
2.支持多种数据类型:String、List、Set、Sorted Set,Hash。
3.支持事务:操作保证了原子性。
4.可以持久化数据:,但redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步,持久化操作都只是保证数据恢复的措施。
Redis持久化的方式
RDB
在指定的时间间隔内将内存中的数据集快照写入磁盘,记录的是最终结果,启动时自动加载rdb文件,恢复之前保存的数据。属于默认的持久化方式
优点:不影响效率;恢复速度快;
缺点:快照定期生成,可能会丢失较多的数据;
AOF
Redis会把每一个写请求都记录在一个日志文件里。在Redis重启时,会把AOF文件中记录的所有写操作顺序执行一遍,确保数据恢复到最新。
优点:写入间隔短,只会丢失很少的数据;容易读懂;
缺点:文件体积较大;恢复速度较慢;
Redis用处
1.验证码等有时效性的数据,可以放入Redis中并设置保存时间。
2.阅读数、点赞数等更新很快的数据,放在Redis中修改迅速。
3.解决存储海量数据问题