Install and configure redis on C
2018-07-12 本文已影响17人
xiaojianxu
- Add the EPEL repository
sudo yum install epel-release
sudo yum update
- Install Redis
sudo yum install redis
- Start Redis
sudo systemctl redis
sudo service redis start
Optional: To automatically start Redis on boot:
sudo systemctl enable redis
systemctl 命令不存在,可以使用 service
- Verify the Installation
Verify that Redis is running with redis-cli:
redis-cli ping
If Redis is running, it will return:
PONG
Configure Redis
Redis provides two options for disk persistence:
- Point-in-time snapshots of the dataset, made at specified intervals(RDB).
RDB 持久化是 redis 默认的,用来生成某一个时间点的数据快照;RDB 是一个经过压缩的二进制文件,采用 RDB 持久化时服务器只会保存一个 RDB 文件(维护比较简单);
-每次进行 RDB 持久化时,redis 都是将内存中完成的数据(??完成的)写到文件中,不是增量的持久化(写脏数据);
-写RDB文件时,先把内存中数据写到临时文件,然后替换原来的 RDB 文件;
1、RDB 文件的生成:
RDB 持久化可以手动执行,也可以按照服务器的配置定期执行。
1)save 和 bgsave(手动用于生成 RDB 文件的命令):
save 会阻塞 redis 服务器进程,直到创建 RDB 文件完毕为止(在此期间不能处理任何请求)
2)bgsave fork 一个子进程来创建 RDB 文件,父进程可以继续处理命令请求
2、RDB 文件的载入
redis 没有专门的命令去载入 RDB 文件,只有在服务器启动的时候,检测到 RDB 文件存在就会自动载入。
如果 redis 启用了 AOF 持久化功能,服务器优先使用 AOF 文件还原数据。
当服务器载入 RDB 文件时,会一直处于阻塞状态,直到载入完毕为止。
载入 RDB 文件时,系统会自动检查,如果是过期键不会加载到数据库中。
- Append-only logs of all the write operations performed by the server(AOF).
RDB 方式持久化的颗粒比较大,当服务器宕机时,直到上次 save/bgsave 后的所有数据都会丢失。而 AOF 的持久化颗粒比较细,服务器宕机后,只有宕机之前没来得 AOF 的操作数据会丢失。
1、AOF 实现
1) AOF 持久化是通过 redis 服务器所执行的写命令来记录数据库状态的;被写入 AOF 文件的所有命令都是以 Redis 的命令请求协议格式保存的(redis 请求协议是纯文本的)。服务器在启动时,通过载入 AOF 文件、并执行其中的命令来还原服务器状态。
2) AOF 文件名通过配置文件 appendfilename appenonly.aof 指定,存放位置通过配置文件 dir /var/lib/redis 指定。
3) AOF 步骤:
命令追加,服务器在执行完一个写命令后,会议协议的格式把其追加到 aof_buf 缓冲区末尾;
文件写入,redis 服务器进程就是一个事件循环,在每次事件循环结束,会根据配置文件中的 appendfsync 属性值决定是否是将 aof_buf中的数据写入到 AOF 文件中。
4) 文件同步:将内存缓冲区的数据写到磁盘(由于 OS 的特性导致)
Each option has its own pros and cons which are detailed in the Redis documentation. For the greatest level of data safty, consider running both persistence methods.
Because the Point-in-time snapshot persistence is enabled by default, you only need to set up AOF persistence:
- Make sure that the following values are set for the appendonly and appendfsync settings in redis.conf:
appendonly yes
appendfsync everysec
- Restart Redis:
sudo systemctl restart redis
https://www.linode.com/docs/databases/redis/install-and-configure-redis-on-centos-7/
https://lanjingling.github.io/2015/11/16/redis-chijiuhua/