关注公众号,一起交流,微信搜一搜: 潜行前行 redis 持久化 redis 的数据是保存再系统内存里面的.持久化就是把内存的数据转移到磁盘中,redis 的持久化策略有两种:RDB.AOF RDB RDB 是以快照的形式把内存里的数据生成一个 RDB 格式备份文件,定时保存.保存的是数据的压缩过数据结构 有两个命令 SAVE.BGSAVE 可以生成 RDB 文件,SAVE 会阻塞主服务进程,直到 RDB 文件创建完毕.BGSAVE 则是派生一个子进程去执行 RDB 的生成 RDB 会在 red…
一.双写一致性 双写一致性,也就是说 Redis 和 mysql 数据同步 双写一致性数据同步的方案有: 1.先更新数据库,再更新缓存 这个方案一般不用: 因为当有两个请求AB先后更新数据库后,A应该先更新缓存,但是因为网络原因,B却先更新了缓存,导致了脏数据,所以不考虑用. 2.先删缓存,再更新数据库 这个方案也不是很好: 缓存删了,数据库还没存完,又来了一个请求,又去数据库拿,然后缓存又有了(在存数据的时候,请求来了,缓存不是最新的) 3.先更新数据库,再删缓存 推荐用这个方案: 更新了数据…
当缓存需要被清理时(比如空间占用已经接近临界值了),需要使用某种淘汰算法来决定清理掉哪些数据.常用的淘汰算法有下面几种: 1. FIFO:First In First Out,先进先出.判断被存储的时间,离目前最远的数据优先被淘汰. 2. LRU:Least Recently Used,最近最少使用.判断最近被使用的时间,目前最远的数据优先被淘汰. 3. LFU:Least Frequently Used,最不经常使用.在一段时间内,数据被使用次数最少的,优先被淘汰.…
嘈杂和忙碌的生活占据占据了生活的每一天,好久没有静下心来对自己喜欢的技术进行归纳总结了.痛定思痛,今天开始开荒,把之前研究的技术进行归纳总结,先从Azure的Redis的开发技术开始. Azure 的Redis是一个PaaS服务,它已经对Redis的高可用和集群进行了完美的封装,我们就不需要对Redis的搭建和维护投人太多的精力,如果自己搭建,网上也是有很多的资料,这不是本篇要讲的.但是我简单描述一下Azure 的Redis 提供了三个档次的服务,即基本层.Standard层,Premium层,…
本篇主要讲的是 AOF 持久化,了解 AOF 的数据组织方式和运作机制.redis 主要在 aof.c 中实现 AOF 的操作. 数据结构 rio redis AOF 持久化同样借助了 struct rio. 详细内容在<深入剖析 redis RDB 持久化策略>中有介绍. AOF 数据组织方式 假设 redis 内存有「name:Jhon」的键值对,那么进行 AOF 持久化后,AOF 文件有如下内容: *2 # 2个参数 $6 # 第一个参数长度为 6 SELECT # 第一个参数 $1 #…
简介 redis 持久化 RDB.AOF redis 提供两种持久化方式:RDB 和 AOF.redis 允许两者结合,也允许两者同时关闭. RDB 可以定时备份内存中的数据集.服务器启动的时候,可以从 RDB 文件中回复数据集. AOF 可以记录服务器的所有写操作.在服务器重新启动的时候,会把所有的写操作重新执行一遍,从而实现数据备份.当写操作集过大(比原有的数据集还大),redis 会重写写操作集. 本篇主要讲的是 RDB 持久化,了解 RDB 的数据保存结构和运作机制.redis 主要在…
当客户端会发起需要更多内存的申请,Redis检查内存使用情况,如果实际使用内存已经超出maxmemory,Redis就会根据用户配置的淘汰策略选出无用的key; 当前Redis3.0版本支持的淘汰策略有6种: 1. volatile-lru:从设置过期时间的数据集(server.db[i].expires)中挑选出最近最少使用的数据淘汰.没有设置过期时间的key不会被淘汰,这样就可以在增加内存空间的同时保证需要持久化的数据不会丢失. 2. volatile-ttl:除了淘汰机制采用LRU,策略基…
一:Redis的AOF是什么? 以日志的形式来记录每个写操作(读操作不记录),将Redis执行过的所有写指令记录下来(读操作不记录),只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作.RDB可以搞定备份恢复的事情,为什么还会出现AOF? 使用RDB进行保存时候,如果Redis服务器发送故障,那么会丢失最后一次备份的数据!AOF出现是来解决这个问题!同时出现RDB和AOF是冲突呢?还…
Redis占用内存大小 我们知道Redis是基于内存的key-value数据库,因为系统的内存大小有限,所以我们在使用Redis的时候可以配置Redis能使用的最大的内存大小. 1.通过配置文件配置 通过在Redis安装目录下面的redis.conf配置文件中添加以下配置设置内存大小. //设置Redis最大占用内存大小为100 Mmaxmemory 100mb redis的配置文件不一定使用的是安装目录下面的redis.conf文件,启动redis服务的时候是可以传一个参数指定redis的配置…
https://juejin.im/post/5d674ac2e51d4557ca7fdd70 Redis占用内存大小 我们知道Redis是基于内存的key-value数据库,因为系统的内存大小有限,所以我们在使用Redis的时候可以配置Redis能使用的最大的内存大小. 1.通过配置文件配置 通过在Redis安装目录下面的redis.conf配置文件中添加以下配置设置内存大小 //设置Redis最大占用内存大小为100M maxmemory 100mb 复制代码 redis的配置文件不一定使用…