一、NoSQL
NoSQL 是 Not Only SQL 的缩写,意即"不仅仅是 SQL"的意思,泛指非关系型的数据库。强调 Key-Value Stores 和文档数据库的优点。
NoSQL 产品是传统关系型数据库的功能阉割版本,通过减少用不到或很少用的功能,来大幅度提高产品性能
·不遵循 SQL 标准。 (添加 insert 修改 update )
·不支持 ACID。
·远超于 SQL 的性能。
1.NoSQL的起源
NoSQL(Not Only SQL)是一种非关系型数据库管理系统的范畴,起源于互联网公司对于大数据处理和高可扩展性需求的追求。以下是NoSQL起源的简要描述:
1.高负载互联网应用:随着互联网的迅猛发展,一些大型网络平台、社交媒体和电子商务网站等面临着大量的数据存储和高并发访问的问题。传统关系型数据库在应对这类场景时遇到了挑战,因为它们常常基于ACID特性,对于数据结构和规模的灵活性和可扩展性有限。
2.大数据需求:随着互联网应用和物联网设备的普及,数据量呈指数级增长。传统关系型数据库面临处理大规模数据集和快速读写的瓶颈,需要更高效的解决方案。
3.分布式计算和云计算:分布式计算和云计算技术的兴起也促进了NoSQL数据库的发展。NoSQL数据库适应了分布式环境,能够水平扩展和并行处理,带来更好的性能和可伸缩性。
4.数据模型创新:为了满足互联网应用的多样化需求,NoSQL数据库引入了不同的数据模型,例如键值存储、文档存储、列存储和图形数据库等。这些新的数据模型提供了更灵活的数据结构和查询方式。
5.NoSQL运动:2009年,NoSQL成为一个独立的概念,并聚集了一些开源项目和公司的努力。很多互联网公司开始采用或开发自己的NoSQL数据库解决方案,推动了NoSQL运动的兴起。
总之,NoSQL起源于对大数据处理需求和传统关系型数据库的局限性,旨在提供更高效、可扩展和灵活的数据存储和管理方案,适应了当今互联网时代的挑战和需求。
2.NoSQL的使用
2.1NoSQL特性
·灵活的数据模型
·海量数据的读写
·高性能和可伸缩性
·高可用性和容错性
2.2NoSQL不适用场景
·需要事务支持
·基于 sql 的结构化查询存储,处理复杂的关系,需要关系查询。
用不着 sql 的和用了 sql 也不行的情况,考虑用 NoSql
3.常见的NoSQL及区别
3.1常见的NoSQL数据库
临时性键值存储 | 永久性键值存储 | 面向文档的数据库 | 面向列的数据库 |
Memcached | Tokyo Tyrant | MangoDB | Cassandra |
Rendis | Flare | CouchDB | HBase |
ROMA | HyperTable |
||
Redis |
3.2区别
Memcached
·很早出现的NoSQL数据库
·数据都在内存中,一般不持久化
·支持简单的 key-value 模式,支持类型单一
·一般是作为缓存数据库辅助持久化的数据库(MySQL)
Redis
·几乎覆盖了 Memcached 的绝大部分功能
·数据都在内存中,支持持久化,主要用作备份恢复
·除了支持简单的 key-value 模式,还支持多种数据结构的存储,比如 list、set、hash、zset 等。
·一般是作为缓存数据库辅助持久化的数据库
MongoDB
·高性能、开源、模式自由(schema free)的文档型数据库
·数据都在内存中, 如果内存不足,把不常用的数据保存到硬盘
·虽然是 key-value 模式,但是对 value(尤其是 json)提供了丰富的查询功能
·支持二进制数据及大型对象
·可以根据数据的特点替代 RDBMS,成为独立的数据库。或者配合 RDBMS,存储特定的数
二、Redis
1.Redis简介
·Redis 是一个开源的 key-value 存储系统。
·和 Memcached 类似,它支持存储的 value 类型相对更多,包括 string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和 hash(哈希类型)。
·这些数据类型都支持 push/pop、add/remove 及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。
·在此基础上,Redis 支持各种不同方式的排序。
·与 memcached 一样,为了保证效率,数据都是缓存在内存中。
·区别的是 Redis 会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件。
·并且在此基础上实现了 master-slave(主从)同步。
2.Redis的应用场景
2.1数据缓存(提高访问性能)
查询概率》》 增删改的概率
将一些数据在短时间之内不会发生变化,而且它们还要被频繁访问,为了提高用户的请求速度和降低网站的负载,降低数据库的读写次数,就把这些数据放到缓存中。
2.2会话缓存
session cache,主要适用于 session 共享 (string 类型)
2.3排行榜/计数器
(NGINX+lua+redis 计数器进行 IP 自动封禁)(zset)
2.4消息队列
(构建实时消息系统,聊天,群聊) (list)
2.5粉丝 (set)
2.6用于存储对象 (hash)
面试题
string :会话信息
list:消息
set:粉丝 共同好友
zset :排行榜
hash: 存储对象
三、Redis的安装及启动停止
1.下载redis的安装包
命令: wget https://download.redis.io/releases/redis-5.0.14.tar.gz
2.安装redis所依赖的环境
命令: yum -y install gcc-c++
3.解压redis压缩包
命令: tar -zxvf redis-5.0.14.tar.gz
4.编译
a.进入redis解压目录
命令: cd redis-5.0.14
b.执行make命令编译
命令: make
5.安装redis
命令: make PREFIX=/usr/redis install (如果不加prefix 默认安装到/usr/local下面)
(如果命令执行不成功,换为 make install PREFIX=/usr/redis )
6.查看redis安装位置
命令: which redis-server
7.启动redis
a.进入安装目录的bin目录下,顺便查看一下是否拥有权限
命令: cd /usr/redis/bin/