AOF contains a log of all the operations one after the other in an easy to understand and parse format.The rewrite is completely safe as while Redis continues appending to the old file, a completely new one is produced with the minimal set of operations needed to create the current data set, and once this second file is ready Redis switches the two and starts appending to the new one. Redis is able to automatically rewrite the AOF in background when it gets too big.Even if the log ends with a half-written command for some reason (disk full or other reasons) the redis-check-aof tool is able to fix it easily. The AOF log is an append-only log, so there are no seeks, nor corruption problems if there is a power outage.fsync is performed using a background thread and the main thread will try hard to perform writes when no fsync is in progress, so you can only lose one second worth of writes. With the default policy of fsync every second, write performance is still great. Using AOF Redis is much more durable: you can have different fsync policies: no fsync at all, fsync every second, fsync at every query.AOF also needs to fork() but less frequently and you can tune how often you want to rewrite your logs without any trade-off on durability. fork() can be time consuming if the dataset is big, and may result in Redis stopping serving clients for some milliseconds or even for one second if the dataset is very big and the CPU performance is not great. RDB needs to fork() often in order to persist on disk using a child process.However you'll usually create an RDB snapshot every five minutes or more, so in case of Redis stopping working without a correct shutdown for any reason you should be prepared to lose the latest minutes of data. You can configure different save points where an RDB is produced (for instance after at least five minutes and 100 writes against the data set, you can have multiple save points). RDB is NOT good if you need to minimize the chance of data loss in case Redis stops working (for example after a power outage).On replicas, RDB supports partial resynchronizations after restarts and failovers.RDB allows faster restarts with big datasets compared to AOF.The parent process will never perform disk I/O or alike. RDB maximizes Redis performances since the only work the Redis parent process needs to do in order to persist is forking a child that will do all the rest.RDB is very good for disaster recovery, being a single compact file that can be transferred to far data centers, or onto Amazon S3 (possibly encrypted).This allows you to easily restore different versions of the data set in case of disasters. For instance you may want to archive your RDB files every hour for the latest 24 hours, and to save an RDB snapshot every day for 30 days. RDB is a very compact single-file point-in-time representation of your Redis data.To learn more about how to evaluate your Redis persistence strategy, read on. If you'd rather not think about the tradeoffs between these different persistence strategies, you may want to consider Redis Enterprise's persistence options, which can be pre-configured using a UI.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |