NoSQL数据库简介
NoSQL,Not only SQL,泛指非关系型的数据库,不依赖业务逻辑方式存储,而以简单的 key-value 模式存储,极大地增加了数据库的扩展能力。
1)不遵循SQL标准;
2)不支持ACID(原子性、一致性、隔离性、持久性);
3)远超于SQL的性能。
NoSQL适用场景
- 对数据高并发的读写;
- 海量数据的读写;
- 对数据高可扩展性的读写。
NoSQL不适用场景
- 需要事务支持;
- 基于SQL的结构化查询存储,处理复杂的关系,需要即席查询(用户根据自己需求来灵活地选择查询条件,系统根据用户的选择生成相应的统计报表);
- 用不着SQL 和 用了SQL也不行的情况,均可以考虑NoSQL
Redis概述
- 开源的Key-Value存储系统;
- 支持更多的Value类型,包括字符串string、链表list、集合set、有序集合zset、哈希类型hash;
- 原子性操作,支持push/pop、add/remove、取交集/并集/差集等操作;
- 支持不同方式的排序;
- 为保证效率,数据缓存在内存中,Redis会周期性地把更新的数据写入磁盘,或把修改操作写入记录文件;
- 实现master-slave主从同步。
Redis应用场景
- 配合关系型数据库做高速缓存;
- 多样的数据结构存储持久化数据
Redis安装
- 在服务器准备c语言的编译环境gcc;
- 在 Download | Redis 下载Redis的压缩包,并通过XFtp将压缩包上传至服务器端;
- 解压压缩包:
tar -zxvf redis-7.2.0.tar.gz
- 进入 ./redis-7.2.0 目录下进行编译:
make
- 编译成功后进行安装:
make install
Redis的默认安装目录:/usr/local/bin
默认安装目录下文件说明:
- redis-benchmark:性能测试工具;
- redis-check-aof:修复有问题的AOF文件;
- redis-check-dump:修复有问题的dump.rdb文件;
- redis-sentinel:Redis集群使用;
- redis-server:Redis服务器启动命令
- redis-cli:客户端,操作入口,可以直接通过 /usr/local/bin/redis-cli 启动redis
后台启动
- 备份redis-7.2.0目录文件下的redis.conf文件:
cp /opt/redis-7.2.0/redis.conf /etc/redis.conf
; - 修改新备份文件:将后台启动设置 daemonize no 改成 yes
- Redis后台启动:
redis-server /etc/redis.conf
- 查看redis进程:
ps -ef | grep redis
- 用客户端访问:
redis-cli
Redis 单线程+多路IO复用
多路复用是指使用一个线程来检查多个文件描述符(Socket)的就绪状态,比如调用select和pull函数,传入多个文件描述符,如果有一个文件描述符就绪则返回,否则阻塞到超时。得到就绪状态后进行真正的操作,可以在同一个线程里执行,也可以启动线程执行(比如启用线程池)。