一、关系型数据库和非关系型数据库
1.1 关系型数据库
一个结构化的数据库创建在关系模型基础上,一般面向于记录,包括:Oracle、MySQL、SQLServer、Microsoft Access、DB2等
1.2 非关系型数据库
除了主流的关系型数据库外的数据库,都为非关系型数据库,包括Redis(支持大数据、高并发)、MongoDB、Hbase(大数据)、CouhDB(大数据)等
1.2.1 非关系型数据库的背景
High performance——对数据库高并发读写需求
High Storage——对海量数据高校存储和访问需求
High Scalability && High Availability——对数据库高扩展性与高可用性需求
1.3 关系型数据库和非关系型数据库之间的区别
- 数据存储方式不同
- 关系型数据库:数据主要存储在数据表的行和列中
- 非关系型数据库:数据通常存储在数据集中
- 扩展方式不同
- 关系型数据库:纵向,比如:硬件中添加内存
- 非关系型数据库:横向(天然分布式)
- 对事务的支持不同
二、Redis
2.1 Redis的定义
远程字典服务器是一个开源的NoSQL数据库,基于内存运行并支持持久化,采用key-value(键值对)的存储方式,是目前分布式架构不可或缺的一环。Redis服务器程序时单进程模型,也就是说在一台服务器上可以开启多个Redis进程,Redis的实际处理速度则是完全依靠于主进程的执行效率
2.2 Redis的优点
-
具有极高的数据读写速度
-
支持丰富的数据类型:支持key-value、Strings、Lists、Hashes、Sets及Sorted Sets等数据类型操作
-
支持数据的持久化:可以将内存中的数据保存在磁盘中,重启的时候可以在此加载进行使用
-
原子性
-
支持数据备份(MASTER-SLAVE之间的数据备份)
2.3 Redis的应用场景
Redis主要存放在内存中!例如:获取最新N个数据的操作、排行榜类应用、计数器应用、存储应用、粗处关系、实时分析系统、日志记录。
2.4 Redis传输速率快的原因
-
Redis是一款纯内核结构,避免了磁盘I/O等耗时操作
-
Redis命令处理的核心模块为单线程
-
采用了I/O多路复用机制,提高了并发率
2.5 Redis安装部署(实验)
2.5.1 关闭防火墙和防护
systemctl stop firewalld
setenforce 0
2.5.2 安装gcc、gcc-c++
2.5.3 解压压缩包
2.5.4 编译安装
2.5.5 运行脚本
2.5.6 编辑6379配置文件并重新启动
2.6 Redis命令工具
redis-server:用于启动 Redis 的工具
redis-benchmark:用于检测 Redis 在本机的运行效率
redis-check-aof:修复 AOF 持久化文件
redis-check-rdb:修复 RDB 持久化文件
redis-cli:Redis 命令行工具
2.6.1 redis-cli命令行工具
语法:redis-cli -h host -p port -a password
-h | 指定远程主机 |
-p | 指定 Redis 服务的端口号 |
-a | 指定密码,未设置数据库密码可以省略-a 选项 |
2.6.2 redis-benchmark测试工具
语法:redis-benchmark [选项] [选项值]
-h | 指定服务器主机名 |
-p | 指定服务器端口 |
-s | 指定服务器 socket |
-c | 指定并发连接数 |
-n | 指定请求数 |
-d | 以字节的形式指定 SET/GET 值的数据大小 |
-k | 1=keepalive 0=reconnect |
-r | SET/GET/INCR 使用随机 key, SADD 使用随机值。 |
-P | 通过管道传输<numreq>请求。 |
-q | 强制退出 redis。仅显示query/sec 值。 |
--csv | 以 CSV 格式输出。 |
-l | 生成循环,永久执行测试。 |
-t | 仅运行以逗号分隔的测试命令列表。 |
-I | Idle 模式。仅打开 N 个 idle 连接并等待。 |
三、Redis数据库常用命令
3.1 set和get
set:存放数据,命令格式为 set key value
get:获取数据,命令格式为 get key
3.2 exists
exists 命令可以判断键值是否存在
3.3 del
del 命令可以删除当前数据库的指定 key
3.4 type
type 命令可以获取 key 对应的 value 值类型
3.5 rename
rename 命令是对已有 key 进行重命名。(覆盖)
格式:rename 源key 目标key
3.6 renamenx
renamenx 命令的作用是对已有 key 进行重命名,并检测新名是否存在,如果目标 key 存在则不进行重命名。(不覆盖)
格式:renamenx 源key 目标key
3.7 dbsize
dbsize命令的作用是查看当前数据库中key的数目
3.8 设置密码
使用config set requirepass yourpassword命令设置密码
3.9 查看密码
使用config set requirepass yourpassword命令设置密码
四、Redis多数据库常用命令
4.1 多数据库中来回切换
命令格式:select 序号
4.2 多数据库之间移动数据
格式:move 键值 序号
4.3 清除数据库内数据
FLUSHDB :清空当前数据库数据
FLUSHALL :清空所有数据库的数据,慎用!