redis目录
一、redis概念
概念:基于内存的数据库,常用作键值存储、缓存和消息队列等
- Redis 是一个开源的 key-value 存储系统。
- 和 Memcached 类似,它支持存储的 value 类型相对更多,包括
string (字符串)、list (链表)、set (集合)、zset (sorted set –有序集合) 和hash(哈希类型)。 - 这些数据类型都支持 push/pop、add/remove 及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。
- 在此基础上,Redis 支持各种不同方式的排序。 与 memcached 一样,为了保证效率,数据都是缓存在内存中。 区别的是 Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件(持久性操作)。
- 并且在此基础上实现了== master-slave (主从) ==同步。
二、NoSQL数据库
(一)session存哪里?
- 方案一:存在客户端cookie
缺点:存在客户端,不安全 - 方案二:session复制
缺点:占内存 - 方案三:NoSQL数据库
优点:减少CPU、IO压力,直接通过内存读取;
作为缓存数据库,减少IO的读操作
(二)NoSQL特点
NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,泛指非关系型的数据库
1.NoSQL特点
1.非关系型数据库,不依赖业务逻辑数据库存储,以简单key-value存储。因此大大的增加了数据库的扩展能力
2.不遵循SQL标准
3.不支持ACID(原子性 一致性 持久性 隔离性)
4.远超于SQL的性能
2.NoSQL适用场景
高并发读写
海量数据读写
数据可扩展
3.NoSQL不适用场景
事务存储
复杂数据库
(也就是:用不着SQL和用了SQL也不行的情况,请考虑用NoSQL)
3.常见的NoSQL数据库
Memcache | Redis | MongoDB |
很早出现的NoSQL数据库 | 几乎覆盖了Memcached的绝大部分功能 | 高性能、开源、模式自由(schema free)的文档型数据库 |
数据都在内存中,一般不持久化 | 数据都在内存中,支持持久化,主要用作备份恢复 | 数据都在内存中, 如果内存不足,把不常用的数据保存到硬盘 |
支持简单的key-value模式,支持类型单一(只支持字符串) | 除了支持简单的key-value模式,还支持多种数据结构的存储,比如 list、set、hash、zset等, | 虽然是key-value模式,但是对value(尤其是json)提供了丰富的查询功能;支持二进制数据及大型对象 |
一般是作为缓存数据库辅助持久化的数据库 | 一般是作为缓存数据库辅助持久化的数据库 | 可以根据数据的特点替代RDBMS(关系型数据库) ,成为独立的数据库。或者配合RDBMS,存储特定的数据。 |