关系型数据库
- 一个结构化的数据库,创建在关系模型基础上
- 一般面向于记录
- 包括
- Oracle、MySQL、SQL Server、Microsoft Access、DB2等
非关系型数据库
- 除了主流的关系型数据库外的数据库,都认为是非关系型
- 包括
- Redis、MongoDB、Hbase等
非关系型数据库产生背景
- High performance——对数据库高并发读写需求
- Huge Storage——对海量数据高效存储与访问需求
- High Scalability && High Availability——对数据库高扩展性与高可用性需求
Redis简介
- Redis基于内存运行并支持持久化
- 采用key-value(键值对)的存储形式
- 优点
- 具有极高的读写速度
- 支持丰富的数据类型
- 支持数据的持久化
- 原子性
- 支持数据备份
Redis安装部署
[root@localhost ~]# tar zxvf redis-4.0.9.tar.gz
[root@localhost ~]# cd redis-4.0.9
[root@localhost redis-4.0.9]# yum -y install gcc*
[root@localhost redis-4.0.9]# make
[root@localhost redis-4.0.9]# make PREFIX=/usr/local/redis install
[root@localhost redis-4.0.9]# cd utils/
[root@localhost redis-4.0.9]# ./install_server.sh #初始化脚本
Please select the redis port for this instance: [6379]
Selecting default: 6379 #指定端口
Please select the redis config file name [/etc/redis/6379.conf]
Selected default - /etc/redis/6379.conf #配置文件位置
Please select the redis log file name [/var/log/redis_6379.log]
Selected default - /var/log/redis_6379.log #日志位置
Please select the data directory for this instance [/var/lib/redis/6379]
Selected default - /var/lib/redis/6379 #数据文件位置
Please select the redis executable path [] /usr/local/redis/bin/redis-server #指定可执行命令的位置
Selected config:
Port : 6379
Config file : /etc/redis/6379.conf
Log file : /var/log/redis_6379.log
Data dir : /var/lib/redis/6379
Executable : /usr/local/redis/bin/redis-server
Cli Executable : /usr/local/redis/bin/redis-cli
Is this ok? Then press ENTER to go on or Ctrl-C to abort.
Copied /tmp/6379.conf => /etc/init.d/redis_6379
Installing service...
Successfully added to chkconfig!
Successfully added to runlevels 345!
Starting Redis server...
Installatio
[root@localhost utils]# netstat -anpt | grep redis
[root@localhost utils]# vim /etc/redis/6379.conf
#修改
bind 127.0.0.1 192.168.1.101 #监听地址
daemonize yes #守护进程
[root@localhost utils]# /etc/init.d/redis_6379 restart
#redis命令行
[root@localhost utils]# ln -s /usr/local/redis/bin/* /usr/local/bin/
#进入redis
[root@localhost ~]# redis-cli
[root@localhost ~]# redis-cli -h 192.168.10.101
127.0.0.1:6379> ping #检测进程是否正常运行
PONG
127.0.0.1:6379> help #命令帮助
127.0.0.1:6379> help @list #类型帮助 "@"加类型
[root@localhost utils]# redis-benchmark -h 127.0.0.0 -p 6379 -c 100 -n 100000 #测试应答能力
[root@localhost utils]# redis-benchmark -h 192.168.10.101 -p 6379 -q -d 100 #测试读写能力
[root@localhost utils]# redis-benchmark -t set,lpush -n 100000 -q
#测试设置数据与拉取数据的性能
#redis数据库用法
127.0.0.1:6379> set k1 1 #设置键值
127.0.0.1:6379> keys * #查看键值
127.0.0.1:6379> get v1 #查看v1的值
127.0.0.1:6379> keys v* #查看v开头的键
127.0.0.1:6379> exists v1 #查看该键是否存在 1:存在 0:不存在
127.0.0.1:6379> del k1 #删除键值
127.0.0.1:6379> rename #重命名键
127.0.0.1:6379> renamenx #重命名键时检测是否有重复的key
127.0.0.1:6379>dbsize #键的总数量
#切换至序号为 10 的数据库
127.0.0.1:6379>select 10
#移动数据
127.0.0.1:6379> move k2 10
#清空当前数据库
127.0.0.1:6379> flushdb
#清空所有数据库
127.0.0.1:6379> flushall
数据类型 | 描述 |
---|---|
string | 字符串 |
list | 列表 |
set | 无序集合,自动去重 |
sorted set | 有序集合,不能去重 |
hash | 结构化数据生成hash值缓存到redis数据库中 |
Redis命令工具
Redis软件提供了多个命令工具。安装Redis服务时,所包含的软件工具会同时被安装到系统中,在系统中可以直接使用。常用命令工具作用如下
命令工具 | 作用 |
---|---|
redis-server | 用于启动Redis的工具 |
redis-benchmark | 用于检测Redis在本机运行效率 |
redis-check-aof | 修复AOF持久化文件 |
redis-chech-rdb | 修复RDB持久化文件 |
redis-cli | 命令行工具 |
Redis持久化
- 持久化概述
- Redis是运行在内存中,内存中的数据断电丢失
- 为了能够重用Redis数据,或防止系统故障,需要将Redis中的数据写入到磁盘空间中,即持久化
- 持久化分类
- RDB方式:创建快照的方式获取某一时刻Redis中所有数据的副本
- AOF方式:将执行的写命令写道文件的末尾,以日志的方式来记录数据的变化
#优化Redis
[root@localhost ~]#vim /etc/redis/6379.conf
#RDB持久化配置
save 900 1 #在 900 秒(15 分钟)之后,如果至少有 1 个 key 发生变化,则 dump内存快照。
save 300 10 #在 300 秒(5 分钟)之后,如果至少有 10 个 key 发生变化,则 dump内存快照。
save 60 10000 #在 60 秒(1 分钟)之后,如果至少有 10000 个 key 发生变化,则dump 内存快照。
dbfilename dump.rdb #RDB文件名称
dir /var/lib/redis/6379 #RDB文件路径
rdbcompression yes #是否进行压缩
#AOF持久化配置
appendonly yes #开启AOF持久化(默认为no)
appendfilename "appendonly.aof " #AOF文件名称
appendfsync everysec
#三种同步方式
always #同步持久化,每次发生数据变化会立刻写入磁盘
everysec #默认推荐,每秒异步记录一次(默认值)
no #不同步,交给操作系统决定如何同步
aof-load-truncated yes #忽略最后一条可能存在问题的指令
[root@localhost ~]# /etc/init.d/redis_6379 restart
Redis密码设置
-
设置方法
-
通过配置文件redis.conf设置密码
[root@localhost ~]# vim /etc/redis/6379.conf requirepass foobared #找到该行取消注释
-
通过命令设置密码
#进入到redis中 [root@localhost ~]# redis-cli -h 192.168.10.101 #设置密码 192.168.10.101:6379> config set requirepass 123456 OK
-
-
连接方式
-
连接时输入密码
[root@localhost bin]# ./redis-cli -a 123456
-
先连接再输入密码
[root@localhost bin]# ./redis-cli127.0.0.1:6379> auth 123456
-
-
区别
- 修改配置文件设置的密码永久生效;使用命令设置的密码临时生效,重启后失效
- 修改配置文件设置的密码,需重启生效;使用命令设置设置的密码,退出后在登录生效,重启后失效
- 命令的优先级高于配置文件的优先级