NoSQL 数据库简介
1、技术发展
技术的分类:
- 解决功能性的问题:Java、Jsp、RDBMS、Tomcat、HTML、Linux、JDBC、SVN
- 解决扩展性的问题:Struts、Spring、SpringMVC、Hibernate、Mybatis
- 解决性能的问题:NoSQL、Java 线程、Hadoop、Nginx、MQ、ElasticSearch
1.1、Web1.0 时代
Web1.0 的时代,数据访问量很有限,用一夫当关的高性能的单点服务器可以解决大部分问题。
1.2、Web2.0 时代
随着 Web2.0 的时代的到来,用户访问量大幅度提升,同时产生了大量的用户数据。加上后来的智能移动设备的普及,所有的互
联网平台都面临了巨大的性能挑战。
1.3、解决 CPU 和内存压力
1.4、解决 IO 压力
2、NoSQL 数据库
2.1、概述
NoSQL(NoSQL = Not Only SQL ),意即 “不仅仅是SQL”,泛指非关系型的数据库。
NoSQL 不依赖业务逻辑方式存储,而以简单的 key-value 模式存储。因此大大的增加了数据库的扩展能力。
- 不遵循 SQL 标准;
- 不支持 ACID,但并不是不支持事务;
- 远超于SQL 的性能。
2.2、NoSQL 适用场景
- 对数据高并发的读写
- 海量数据的读写
- 对数据高可扩展性的
2.3、NoSQL 不适用场景
- 需要事务支持
- 基于 sql 的结构化查询存储,处理复杂的关系,需要即席查询
- 用不着 sql 的和用了 sql 也不行的情况,请考虑用 NoSql
3、行式存储数据库(大数据时代)
3.1、行式数据库
3.2、列式数据库
4、图关系数据库
主要应用:社会关系,公共交通网络,地图及网络拓谱(n*(n-1)/2)
5、Redis 安装
5.1、Redis 概述安装
- Redis 是一个开源的
key-value 存储系统; - 和 Memcached 类似,它支持存储的 value 类型相对更多,包括 string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合) 和 hash(哈希类型);
- 这些数据类型都支持 push/pop、add/remove 及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的;
- 在此基础上,Redis 支持各种不同方式的排序;
- 与 memcached 一样,为了保证效率,数据都是缓存在内存中;
- 区别的是 Redis 会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件;
- 并且在此基础上实现了 master-slave(主从)同步。
5.2、应用场景
5.2.1、配合关系型数据库做高速缓存
- 高频次,热门访问的数据,降低数据库 IO
- 分布式架构,做 session 共享
5.2.2、多样的数据结构存储持久化数据
5.3、Redis 安装
5.3.1、安装步骤
-
准备工作:下载安装最新版的 gcc 编译器 yum install gcc
-
下载 redis-6.2.1.tar.gz 放 /usr/local/redis 目录 -
解压 tar -zxvf redis-6.2.6.tar.gz
-
解压完成后进入目录 -
执行 make 命令(只是编译好) make
-
跳过 make test 继续执行: make install make install
5.3.2、安装目录:usr/local/bin
查看默认安装目录:
[root@sunlight bin]
总用量 18904
-rwxr-xr-x. 1 root root 4829520 3月 7 18:16 redis-benchmark
lrwxrwxrwx. 1 root root 12 3月 7 18:16 redis-check-aof -> redis-server
lrwxrwxrwx. 1 root root 12 3月 7 18:16 redis-check-rdb -> redis-server
-rwxr-xr-x. 1 root root 5003800 3月 7 18:16 redis-cli
lrwxrwxrwx. 1 root root 12 3月 7 18:16 redis-sentinel -> redis-server
-rwxr-xr-x. 1 root root 9518920 3月 7 18:16 redis-server
- redis-benchmark:性能测试工具,可以在自己本子运行,看看自己本子性能如何
- redis-check-aof:修复有问题的 AOF 文件,rdb 和 aof 后面讲
- redis-check-rdb:修复有问题的 dump.rdb 文件
- redis-sentinel:Redis 集群使用
- redis-server:Redis 服务器启动命令
- redis-cli:客户端,操作入口
5.3.3、后台启动
-
备份 redis.conf 拷贝一份 redis.conf 到其他目录: cp /usr/local/redis/redis-6.2.6/redis.conf /myredis
-
后台启动设置 daemonize no 改成 yes 修改 redis.conf (128行)文件将里面的 daemonize no 改成 yes,让服务在后台启动: vim /etc/redis.conf
-
Redis 启动 回到 usr/local/bin 目录: redis-server /etc/redis.conf
[root@sunlight bin]
root 30685 1238 0 18:24 pts/0 00:00:00 vim /etc/redis cp /usr/local/redis/redis-6.2.6/redis.conf /myredis
root 31845 1 0 18:26 ? 00:00:00 redis-server 127.0.0.1:6379
root 32203 1238 0 18:27 pts/0 00:00:00 grep --color=auto redis
可以看到已经启动,端口号为:6379 -
用客户端访问:redis-cli [root@sunlight bin]
127.0.0.1:6379>
-
Redis 关闭 [root@sunlight bin]
127.0.0.1:6379>shutdown
或者直接 kill 进程。
|