1.关系型数据库与非关系型数据库的区别
Tables | 关系型数据库 | 非关系型数据库 |
---|---|---|
成本 | mysql免费;oracle收费 | 开源的,免费的 |
存储与查询 | 硬盘存储,相对查的慢 | 内存存储,查的快 |
存储格式 | 只能是基本格式 | 多种多样 |
年龄 | 出现时间较长,较成熟 | 后起之秀,不可小觑 |
扩展性 | join等不好扩展 | 方便集群 |
事务 | 强事务 | 弱事务 |
查询 | 支持sql复杂查询 | 更适合简单查询 |
个人感觉:
关系型数据库就像一位老员工,他虽然慢,思维也比较固定,但给人的感觉就是一个字 : 稳
非关系型数据库就像年轻小伙,虽然经验不是很丰富,但是干劲十足,相信以后必将是他的天下
一个大型的公司,必定是新老员工都要有的.
对于大型系统而言,基本上也都是非关系型数据库和关系型数据库共存的.
非关系型数据库承担大部分查询,但最终的写入存储,还是使用关系型数据库
2.非关系型数据库的分类
2.1 k-v型存储
2.1.1 Redis
1.支持五种基本类型(String,List,Set,Hash,Sorted Set)
2.基于内存存储,两种持久化方式(RDB快照和AOF)
RDB是固定时间将内存转存磁盘 : 重启恢复快,但不是高可用(最近数据可能会来不及存入磁盘)
save 900 1 在900秒(15分钟)之后,如果至少有1个key发生变化,则dump内存快照。
save 300 10 在300秒(5分钟)之后,如果至少有10个key发生变化,则dump内存快照。
save 60 10000 在60秒(1分钟)之后,如果至少有10000个key发生变化,则dump内存快照。
AOF是将Reids的操作日志以追加的方式写入文件 : 相对高可用,但重启恢复相对慢
appendfsync always 每次有数据修改发生时都会写入AOF文件。
appendfsync everysec 每秒钟同步一次,该策略为AOF的缺省策略。
appendfsync no 从不同步。高效但是数据不会被持久化。
3.操作快(纯内存操作,单线程操作避免上下文频繁切换,采用非阻塞I/o多路复用机制)
4.操作是原子性的,要么成功执行,要么失败完全不执行
5.可以手动实现事务 : MULTI和EXEC指令
6.Redis分布式锁
7.Redis做缓存
8.Redis命令:http://www.redis.net.cn/