关系型数据库和非关系型数据库
关系型数据库
- 一个结构化的数据库,创建在关系模型基础上
- 一般面向于记录
- 包括
- Oracle、MySQL、SQL Server、Microsoft Access、DB2等
非关系型数据库
- 包括主流的关系型数据库外的数据库,都认为是非关系型
- 包括
- Redis、MongoDB、Hbase、CouhDB
非关系型数据库的产生背景
- High perfoermance——对数据库高并发读写需求
- High Storage——对海量数据高效存储和访问需求
- High Scalability && High Availability——对数据库高可扩展性与高可用性需求
Redis简介
- 基于内存运行并支持持久化
- 采用key-value(键值对)的存储形式
- 优点
- 具有极高的数据读写速度
- 支持丰富的数据类型
- 支持数据的持久化
- 原子性
- 支持数据备份
Redis数据库
编译安装
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum -y install gcc* zlib-devel
[root@localhost ~]# tar xvzf redis-4.0.9.tar.gz
[root@localhost ~]# cd redis-4.0.9/
[root@localhost redis-4.0.9]# make
[root@localhost redis-4.0.9]# make PREFIX=/usr/local/redis install
[root@localhost ~]# ln -s /usr/local/redis/bin/* /usr/local/bin/
[root@localhost redis-4.0.9]# cd /root/redis-4.0.9/utils/
[root@localhost utils]# ./install_server.sh
查看进程
netstat -anpt | grep redis
服务控制
./redis_6379 start
./redis_6379 stop
./redis_6379 restart
./redis_6379 status
配置参数的修改
[root@localhost ~]#vim /etc/redis/6379.conf
bind 127.0.0.1 192.168.10.101 //监听的主机地址
port 6379 //端口
daemonize yes //启用守护进程
pidfile /var/run/redis_6379.pid //指定 PID 文件
loglevel notice //日志级别
logfile /var/log/redis_6379.log //指定日志文件
[root@localhost~]#/etc/init.d/redis_6379 restart
[root@localhost utils]# netstat -anpt | grep redis
Redis命令工具
redis-server:用于启动 Redis 的工具;
redis-benchmark:用于检测 Redis 在本机的运行效率;
redis-check-aof:修复 AOF 持久化文件;
redis-check-rdb:修复 RDB 持久化文件;
redis-cli:Redis 命令行工具。
redis-cli命令行工具
连接本机redis
redis-cli
连接远程redis
redis-cli -h 192.168.10.101 -p 6379
redis-benchmark 测试工具
redis-benchmark 是官方自带的 Redis 性能测试工具,可以有效的测试 Redis 服务的性能。
-h:指定服务器主机名;
-p:指定服务器端口;
-s:指定服务器 socket;
-c:指定并发连接数;
-n:指定请求数;
-d:以字节的形式指定 SET/GET 值的数据大小;
-k:1=keep alive 0=reconnect;
-r:SET/GET/INCR 使用随机 key, SADD 使用随机值;
-P:通过管道传输<numreq>请求;
-q:强制退出 redis。仅显示 query/sec 值;
--csv:以 CSV 格式输出;
-l:生成循环,永久执行测试;
-t:仅运行以逗号分隔的测试命令列表;
-I:Idle 模式。仅打开 N 个 idle 连接并等待。
测试请求性能
redis-benchmark -h 192.168.10.101 -p 6379 -c 100 -n 100000
测试存取性能
redis-benchmark -h 192.168.10.101 -p 6379 -q -d 100
结果参数解析:
(1)PING_INLINE:每秒完成多少次PING操作
(2)GET:每秒完成多少次GET key vlaue
(3)SET:每秒完成多少次SET key vlaue
(4)INCR:每秒完成多少次原子计数
(5)MSET:每秒多个key vlaue请求次数
set 与 lpush 操作性能
redis-benchmark -t set,lpush -n 100000 -q
-n:指定请求数;
-q:强制退出 redis。仅显示 query/sec 值;
-t:仅运行以逗号分隔的测试命令列表;
单数据库常用命令
key 相关命令
添加键值对
set key value
查看当前数据库中所有键
keys *
查看当前数据库中以 v 开头的数据
keys v*
查看当前数据库中以 v 开头后面包含任意一位的数据
keys v?
查看当前数据库中以 v 开头后面包含任意两位的数据
keys v??
判断键值是否存在
exists命令
127.0.0.1:6379>exists teacher
(integer) 1 结果为1表示存在,为0则是不存在
删除当前数据库的指定key
del命令
del key
重命名
rename命令(当新的名称在当前数据库中已存在时会直接覆盖)
rename oldkey newkey
renamenx (当新的名称在当前数据库中已存在时,停止重命名)
renamenx oldkey newkey
查看当前数据库中 key 的数目
dbsize
多数据库常用命令
多数据库间切换
select 数据库序号 //Redis默认包含16个数据库,序号为0-15
多数据库间移动数据
set key 数据库序号
清除数据库内数据
清空当前数据库数据,使用 FLUSHDB
命令实现;清空所有数据库的数据,使用 FLUSHALL 命令实现
Redis持久化
概述
- Redis是运行在内存中,内存中的数据断电丢失
- 为了能够重用Redis数据,或者防止系统故障,需要将Redis中的数据写入到磁盘空间,即持久化
持久化分类
- RDB方式
- 创建快照的方式获取某一时刻Redis中所有数据的副本
- AOF方式
- 将执行的写命令写道文件的末尾,以日志的方式来记录数据的变化