首先redis是键值对nosql数据库,是内存存储数据,一般用与高速缓存和消息队列
普通的数据库一般用于存放冷数据,而redis大部分用于存放热数据.
redis特性(为什么那么快)
1.数据存放内存中.
2.使用C语言搭建
3.单线程架构
4.提供键过期功能
5.提供了发布订阅的功能,可以用来实现消息系统
6.Lua脚本的支持。可以利用Lua脚本来创造出新的redis命令
安装部分
[root@zgod1 softs]# tar -xzvf redis-4.0.6.tar.gz -C /usr/local/ 解档之后会带有一个目录
[root@zgod1 softs]# cd /usr/local
[root@zgod1 redis]# mv redis-4.0.6 redis 给这个目录改个名字
[root@zgod1 redis-4.0.6]# cd redis
[root@zgod1 redis]# make && make install 安装
[root@zgod1 redis]# redis-server /usr/local/redis/redis.conf
这时发现启动redis会占用终端
首先对系统的配置文件编辑
vim /etc/sysctl.conf
添加两行
修改后保存退出,然后如下操作:
临时和永久关闭内存的大页存储功能(redis要求的)
取消redis的终端阻塞,让他在后台运行
保存退出,尝试一下是否已经启用了这个后台运行的设置。
检测一下,是否在运行呢?
也可以使用redis-server来查看当前是否已经启动了
注意:redis的端口为6379 如果端口没有开启使用
firewall-cmd --zone=public --add-port=6379/tcp
firewall-cmd --zone=public --add-port=6379/tcp --permanent(永久生效)
使用redis
redis-cli -h ip -p 端口号
redis-cli -h 172.25.250.10 -p 6379
之前我们也说过,redis当中数据的存储是键值对的形式存在的。
那么我们如何在其中创建键值对呢?
之前我们一直在说,redis的数据是存放在内存当中的!
那么接下来为我们看看如何对redis存储做持久化!
所谓的持久化就是将redis存放在内存的数据写入到硬盘当中
RDB:快照持久化-redis在运行的时候存储的数据进行快照的拍摄,然后形成的快照文件存放在硬盘当中。当我们的redis重启的时候读取快照文件,实现数据的恢复!
启用rdb持久化(默认就是开启的!)
vim /usr/local/redis/redis.conf
我们还可以在其中找到另外的关键字dbfilename
那么数据文件存放在哪个目录下呢?
保存退出吧!
save:通过save命令可以创建快照。由他来创建快照文件的时候。redis的主进程来执行这个任务。redis主进程在创建快照的时候会处于阻塞的状态。这个时候我们无法接收数据读写的请求,当快照创建完成之后,redis主进程才会取消阻塞的状态。才能继续正常执行实现数据读写的功能。
bgsave:通过这个命令来创建快照文件的时候,redis主进程会派生出来一个子进程来完成快照创建的任务。主进程在派生子进程的时候也会处于阻塞的状态。子进程只要被派生出来,那么主进程就会取消阻塞。可以继续读写!当我们的快照创建完成之后,子进程就会从内存当中释放掉!
可以从下图中看到,在redis的目录下,已经有了一个快照文件!
接着我们尝试一下是否能够通过上面的两个命令,在redis当中手动创建快照呢?
什么情况下会自动创建快照呢?
- 在关闭redis的时候会自动创建快照文件
- 符合配置文件中设置的快照创建条件的时候会自动创建快照
- 主从节点进行全量复制的时候会在主节点自动创建快照
现在我们来看看另外一种持久化实现的手段
AOF:append only file---只追加文件。
按照顺序将redis数据库当中执行过的增删改等指令记录到文件当中。
当redis重启的时候会按照顺序从头到尾执行一遍文件当中记录的操作
这样一来就恢复了数据
既然有AOF也有RDB,那么谁更优先呢?
如果这两个功能同时开启,那么会使用AOF方式
我们如何启用AOF持久化
编辑配置文件
vim /usr/local/redis/redis.conf
我们尝试开启一下aof。将其设置为appendonly yes
保存退出,并且重新启动我们的redis
没有killall 就yum provides killall -y 查找安装一下
可以看到,我们的目录中已经出现了AOF的记录文件
AOF