本篇文章给大家谈谈redis持久化,以及不建议redis做持久化对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。
本文目录
redis集成规范
Redis是一个分布式(distributed)、容错(fault-tolerant)的Redis实现,集群可以使用的功能是普通单机Redis所能使用的功能的一个子集(subset)。redis的集成规范有:
1,冷热数据区分
虽然Redis支持持久化,但将所有数据存储在Redis中,成本非常昂贵。建议将热数据(如QPS超过5k)的数据加载到Redis中。低频数据可存储在Mysql、ElasticSearch中。
2,业务数据分离
不要将不相关的数据业务都放到一个Redis中。一方面避免业务相互影响,另一方面避免单实例膨胀,并能在故障时降低影响面,快速恢复。
3,消息大小限制
由于Redis是单线程服务,消息过大会阻塞并拖慢其他操作。保持消息内容在1KB以下是个好的习惯。严禁超过50KB的单条记录。消息过大还会引起网络带宽的高占用,持久化到磁盘时的IO问题。
4,连接数限制
连接的频繁创建和销毁,会浪费大量的系统资源,极限情况会造成宿主机当机。请确保使用了正确的Redis客户端连接池配置。
5,缓存Key设置失效时间
作为缓存使用的Key,必须要设置失效时间。失效时间并不是越长越好,请根据业务性质进行设置。注意,失效时间的单位有的是秒,有的是毫秒,这个很多同学不注意容易搞错。
6,缓存不能有中间态
缓存应该仅作缓存用,去掉后业务逻辑不应发生改变,万不可切入到业务里。第一,缓存的高可用会影响业务;第二,产生深耦合会发生无法预料的效果;第三,会对维护行产生肤效果。
lru机制和持久化机制的区别
Redis的持久化机制?大部分的缓存框架都会有基本功能淘汰策略,持久机制.Redis的持久化的机制有两种:AOF(增量):基于数据日志操作实现的持久化.开启方式:redis.conf中appendonly改为yesAOF的三种同步方式:appendfsyncalways每次有数据修改发生时都会写入AOF文件,能够数据不丢失,但是效率非常低.例1S1000个请求,就会显得低效appendfsynceverysec每秒钟同步一次,该策略为AOF的缺省(默认)策略(缺点:1秒内数据可能丢失)appendfsyncno从不同步,高效但是数据不会被持久化建议最好使用everysec既能够保证数据的同步,效率还可以.RDB(默认,全量):采用定时持久化机制,但是服务器因为某种原因宕机可能会数据丢失.全量同步和增量同步区别:全量:就是每天定时(避开高峰期)或者是采用一种周期的实现将数据拷贝另外一个地方.频率不是很大,但是可能会造成数据的丢失.增量:增量同步采用行为操作对数据的实现同步,频率非常高,对服务器同步的压力非常大,能保证数据不丢失.
面试中经常被问到的Redis持久化与恢复该如何解决
首先搞清楚:除非你修改源码,否则redis从算法上没有完备的持久化和恢复方案,所有的方案都建立在“发生意外时尽量减少数据丢失”的前提下,所以真正至关重要的数据,至少不能只用redis保存。
其它就很简单了,配置文件可以打开持久化,设置好数据文件和存储策略,大部分事redis会自己做好,注意selinux或apparmor策略不要跟redis冲突。需要还原时可以用redis-port
redis持久化
Redis是一种高级key-value数据库。它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富。有字符串,链表,集合和有序集合。支持在服务器端计算集合的并,交和补集(difference)等,还支持多种排序功能。所以Redis也可以被看成是一个数据结构服务器。
Redis的所有数据都是保存在内存中,然后不定期的通过异步方式保存到磁盘上(这称为“半持久化模式”);也可以把每一次数据变化都写入到一个appendonlyfile(aof)里面(这称为“全持久化模式”)。
由于Redis的数据都存放在内存中,如果没有配置持久化,redis重启后数据就全丢失了,于是需要开启redis的持久化功能,将数据保存到磁盘上,当redis重启后,可以从磁盘中恢复数据。redis提供两种方式进行持久化,一种是RDB持久化(原理是将Reids在内存中的数据库记录定时dump到磁盘上的RDB持久化),另外一种是AOF(appendonlyfile)持久化(原理是将Reids的操作日志以追加的方式写入文件)。
OK,关于redis持久化和不建议redis做持久化的内容到此结束了,希望对大家有所帮助。