安装
yum 安装
1 | yum info redis // 查看当前源的redis最新版本信息 |
源码安装
1 | # 下载地址从[官网](https://redis.io/download)获取最新的 |
注意:如果没有c编译环境记得安装,如下: 1
yum -y install gcc gcc-c++ kernel-devel //安装gcc、c++编译器以及内核文件
1
make MALLOC=libc
安装成功后,查看redis-server的位置。 1
whereis redis-server
配置
配置文件需要启动后才会生成,如何启动参见“启动”章节, 不同的安装方式配置文件放的位置不太一样, yun安装:/etc/redis.conf 源码安装,需要收到将配置文件拷贝到/etc目录: 1
2cd /xxx/redis-3.2.10
cp redis.conf /etc/
基础配置
1 | # 端口配置 |
持久化配置
快照RDB持久化配置
1 | # Save the DB on disk: |
AOF持久化配置
1 | # 是否开启AOF,默认关闭(no) |
两种持久化的区别
1)如果能接受几分钟的数据丢失的话,建议选择快照RDB 2)要是不允许数据丢失,则需要用AOF来持久化
关于数据恢复: RDB的启动时间会更短,原因有两个: 一是RDB文件中每一条数据只有一条记录,不会像AOF日志那样可能有一条数据的多次操作记录。所以每条数据只需要写一次就行了。 另一个原因是RDB文件的存储格式和Redis数据在内存中的编码格式是一致的,不需要再进行数据编码工作,所以在CPU消耗上要远小于AOF日志的加载。
注意: AOF(Append Only File)<二进制文件>比RDB方式有更好的持久化性。由于在使用AOF持久化方式时,Redis会将每一个收到的写命令都通过Write函数追加到文件最后,类似于MySQL的binlog。 AOF的完全持久化方式同时也带来了另一个问题,持久化文件会变得越来越大。(比如我们调用INCR test命令100次,文件中就必须保存全部的100条命令,但其实99条都是多余的。因为要恢复数据库的状态其实文件中保存一条SET test 100就够了)。为了合并重写AOF的持久化文件,Redis提供了bgrewriteaof命令。
Redis重启如何载入数据的
通过日志可以很清楚的知道redis通过那个文件来取数据的: RDB: * DB loaded from disk: 0.000 seconds AOF: * DB loaded from append only file: 0.000 seconds
保存数据则是: RDB: * DB saved on disk AOF: * Calling fsync() on the AOF file.
重启时将按照以下优先级恢复数据到内存
- 如果只配置AOF,重启时加载AOF文件恢复数据。
- 如果同时 配置了RBD和AOF,启动是只加载AOF文件恢复数据。
- 如果只配置RBD,启动是讲加载dump文件恢复数据。
如果你先开启了RDB模式,想再开启AOF模式,先执行bgrewriteaof命令,不然会因为恢复数据的优先级问题,数据都没有了。
为了防止悲剧发生,注意多备份,AOF模式,记得使用脚本定期执行bgrewriteaof命令。
脚本如下,可以结合Linux Crontab来使用,定期执行。 1
2echo 'bgrewriteaof redis 6379'
redis-cli -p 6379 bgrewriteaof
启动
普通启动
首次启动,命令如下: 1
redis-server
配置文件生成后,后面每次启动就可以直接跟上配置文件了,如下: 1
redis-server /etc/redis.conf
1
redis-server /etc/redis.conf
1
chmod +x /etc/rc.d/rc.local