今天的工作任务是redis的配置以及工具类的完善

1.

什么是Redis的AOF?

AOF是AppendOnly File的缩写,是Redis系统提供了一种记录Redis操作的持久化方案,在AOF生成的文件中,将忠实记录发生在Redis的操作,从而达到在Redis服务器重启或者当机之后,继续恢复之前数据状态的机制。

以下我们来简要看看如何在Redis中使用AOF,并验证整个过程:

A. Redis中主要的AOF设置

   appendonly yes  ---- 打开aof设置,同时将快照功能置于低优先级的位置

  appendfsync no
        当设置appendfsync为no的时候,Redis不会主动调用fsync去将AOF日志内容同步到磁盘,所以这一切就完全依赖于操作系统的调试了。对大多数Linux操作系统,是每30秒进行一次fsync,将缓冲区中的数据写到磁盘上。
   appendfsync everysec
        当设置appendfsync为everysec的时候,Redis会默认每隔一秒进行一次fsync调用,将缓冲区中的数据写到磁盘。但是当这一次的fsync调用时长超过1秒时。Redis会采取延迟fsync的策略,再等一秒钟。也就是在两秒后再进行fsync,这一次的fsync就不管会执行多 长时间都会进行。这时候由于在fsync时文件描述符会被阻塞,所以当前的写操作就会阻塞。
        结论就是,在绝大多数情况下,Redis会每隔一秒进行一 次fsync。在最坏的情况下,两秒钟会进行一次fsync操作。这一操作在大多数数据库系统中被称为group commit,就是组合多次写操作的数据,一次性将日志写到磁盘。
   appendfsync always
        置appendfsync为always时,每一次写操作都会调用一次fsync,这时数据是最安全的,当然,由于每次都会执行fsync,
所以其性能也会受到影响。(如果是金融方面的系统,建议选择always)

B.redis.properties

# Redis数据库索引(默认为0)
spring.redis.database=0
# Redis服务器地址
spring.redis.host=localhost
# Redis服务器连接端口
spring.redis.port=6379
# Redis服务器连接密码(默认为空)
spring.redis.password=
# 连接池最大连接数(使用负值表示没有限制)
spring.redis.pool.max-active=8
# 连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.pool.max-wait=-1
# 连接池中的最大空闲连接
spring.redis.pool.max-idle=8
# 连接池中的最小空闲连接
spring.redis.pool.min-idle=0
# 连接超时时间(毫秒)
spring.redis.timeout=0

C.关于openReplicator的使用

Open Replicator是一个用Java编写的MySQL binlog分析程序。Open Replicator 首先连接到MySQL(就像一个普通的MySQL Slave一样),然后接收和分析binlog,最终将分析得出的binlog events以回调的方式通知应用。Open Replicator可以被应用到MySQL数据变化的实时推送,多Master到单Slave的数据同步等多种应用场景。Open Replicator目前只支持MySQL5.0及以上版本。

参考:https://www.2cto.com/kf/201611/563306.html

方法1:mysql 同步到redis:解析mysql的binlog,然后做同步处理,可以使用的库有:open-replicatorhttps://github.com/whitesock/open-replicator

方法2:同步redis数据到mysql:(https://github.com/leonchen83/redis-replicator

<!--这里是open-replicator的依赖,是用来将mysql的数据放进redis进行缓存用,
这里的依赖是通过maven仓库搜索出来的-->
        <dependency>
            <groupId>com.flipkart</groupId>
            <artifactId>open-replicator</artifactId>
            <version>1.0.8</version>
        </dependency>

D.mysql的binlog详解

(1)Mysql的binlog日志作用是用来记录mysql内部增删改查等对mysql数据库有更新的内容的记录(对数据库的改动),对数据库的查询select或show等不会被binlog日志记录;主要用于数据库的主从复制以及增量恢复。

mysql的binlog日志必须打开log-bin功能才能生存binlog日志

(2)打开mysql的log-bin功能

# grep log-bin my.cnf

log-bin = /data/3306/mysql-bin

我的开发环境使用了wamp软件包

从mysql.ini中找到了类似的一行

注意,前面有分号表示注释的

其他详情,参考:https://www.cnblogs.com/xhyan/p/6530861.html

猜你喜欢

转载自blog.csdn.net/weixin_30563001/article/details/82721345