NoSQL(NoSQL = Not Only SQL ),意为反 SQL 运动,是一项全新的数据库革命性运动,2000 年 前就有人提出,发展至 2009 年趋势愈加高涨。它是指运用非关系型的数据存储,相对于铺天盖地的 关系型数据库运用,这一律念无疑是一种全新的思惟的注入。 随着互联网 web2.0 网站的兴起,传统的关系数据库在应付 web2.0 网站,特别是超大规模和高并 发的 SNS 类型的 web2.0 纯动态网站已经显得力不从心,暴露了不少难以克服的问题,而非关系型的 数据库则因为其自己的特色获得了很是迅速的发展。NoSQL 数据库的产生就是为了解决大规模数据集 合多重数据种类带来的挑战,尤为是大数据应用难题。web
分类 | 举例 | 应用场景 | 数据模型 | 特色 |
---|---|---|---|---|
键值型 | Tokyo Cabinet/Tyrant, Redis, Voldemort,BDB | 内容缓存,主要用于处理大量数据 的高访问负载,也用于一些日志系统等等。 | Key 指向 Value 的键值对,一般用 hash table 来实现 | 查找速度快 |
列存储数据库 | Cassandra, HBase, | 分布式的文件系统 | 以列簇式存储,将同一列数据存在一块儿 | 查找速度快,可扩展性强,更容易进行分布式扩展 |
文档型数据库 | CouchDB, MongoDB | Web 应 用 ( 与 Key-Value 相似, Value是结构化的,不一样的是数据库可以了解 Value 的内容) | Key-Value 对应的键值对,Value 为结构化数据 | 数据结构要求不严格,表结构可变,不须要像关系型数据库同样须要预先定义表结构 |
图形数据库 | Neo4J, InfoGrid, Infinite Graph | 社交网络,推荐系统等。专一于构建关系图谱 | 图结构 | 利用图结构相关算法。好比最短路径寻址,多维度关系查找等 |
NoSQL 是 key-value 形式存储,和传统的关系型数据库不同,不必定遵循传统数据库的一些基本要求,好比说遵循 SQL 标准、ACID 属性、表结构等等。
这类数据库主要有如下特色:redis
Redis 是一个开源的,先进的 key-value 非关系型数据库。它一般被称为数据结构服务器,由于键能够包含 string (字符串)、hash(哈希)、list(链表)、set(集合)和 zset(sorted-set--有序集合)。这些数据类型都支持 push/pop、add/remove 及取交集并集和差集及更丰富的操做。
Redis 和 Memcached 相似,它支持存储的 value 类型相对更多,与 memcached 同样,为了保证效率,数据都是缓存在内存中,区别是 Redis 会周期性的把更新的数据写入磁盘或者把修改操做写入追加的记录文件,而且在此基础上实现了 master-slave(主从)同步。算法
wget -c http://download.redis.io/releases/redis-5.0.7.tar.gz [root@centos7 ~]# tar -zxvf redis-5.0.7.tar.gz #解压 [root@centos7 ~]# cd redis-5.0.7/ [root@centos7 redis-5.0.7]# make MALLOC=lib #编译,因版本较新,因此须要指定库 [root@centos7 redis-5.0.7]# make PREFIX=/usr/local/redis install #安装到指定位置 [root@centos7 redis-5.0.7]# mkdir /usr/local/redis/etc [root@centos7 redis-5.0.7]# cp ./redis.conf /usr/local/redis/etc/ #生成配置文件
[root@centos7 redis-5.0.7]# vim /usr/local/redis/etc/redis.conf daemonize no 修改成 yes #容许redis以守护进程运行
[root@centos7 ~]# /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf 6562:C 18 Jan 2020 00:35:33.038 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo 6562:C 18 Jan 2020 00:35:33.038 # Redis version=5.0.7, bits=64, commit=00000000, modified=0, pid=6562, just started 6562:C 18 Jan 2020 00:35:33.038 # Configuration loaded
[root@centos7 ~]# /usr/local/redis/bin/redis-cli -h 127.0.0.1: #链接指定的 redis 服务器 -p 6379: #指定 redis 服务器的端口 -a 密码: #使用密码登陆 -n 数据库号: #指定链接哪一个数据库 --raw: redis #支持存储中文 [root@centos7 ~]# /usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 6379 127.0.0.1:6379> 127.0.0.1:6379> exit [root@centos7 ~]#
[root@centos7 ~]# /usr/local/redis/bin/redis-cli shutdown 或 [root@centos7 ~]# pkill -9 redis