当前位置: 首页 > news >正文

培训网站建设学校免费网站引导页

培训网站建设学校,免费网站引导页,网站源码采集,中山 网站设计GO实现Redis持久化 项目开发到这里,我们的下一步就是实现Redis的持久化落盘功能,Redis是一个内存型的数据库,在之前我们实现的单机版Redis如果把进程杀掉,我们通过GET、SET指令存储的数据都将不复存在,数据只存在内存的map里面,重启之后什么都没有了 我们现在的目标就是…

GO实现Redis持久化

项目开发到这里,我们的下一步就是实现Redis的持久化落盘功能,Redis是一个内存型的数据库,在之前我们实现的单机版Redis如果把进程杀掉,我们通过GET、SET指令存储的数据都将不复存在,数据只存在内存的map里面,重启之后什么都没有了

我们现在的目标就是把用户发来的指令以resp协议的形式记录在aof文件中,这个aof文件是落在我们电脑硬盘里的,所以是持久化的,当我们Redis内存停掉之后,这个文件会保留下来,当Redis在重启时,我们再读取文件里的数据,把用户之前的指令重新读取出来,再执行一遍,这样就简单的实现了Redis的持久化

实现落盘准备工作

aof.go

我们创建一个aof文件并新建aof.go,我们需要一个AofHandler数据结构,这个Handler是用来处理aof文件的处理器,他可以写和读aof文件,他要持有的数据有Database,这个Database里有Redis核心,还要持有aof文件、用户现在选择的DB分数据库和aof写文件缓存区的channel

type AofHandler struct {database    databaseface.DatabaseaofChan     chan *payloadaofFile     *os.FileaofFilename stringcurrentDB   int
}

然后我们还要写一下channel里面传输数据的数据类型写一下,他的字段有用户指令和分DB所引

type CmdLine = [][]bytetype payload struct {cmdLine CmdLinedbIndex int
}

aof处理器的数据结构我们就设计完了,然后就是设计aof处理器的行为,首先是NewAofHandler,然后就是Add功能,他的功能就是把用户的指令包装成payload塞到aofChan这个channel里面去,接下来是落盘功能HandleAof,他的逻辑是把缓冲区里的数据取出来放到硬盘里去,最后是加载功能LoadAof,就是在初始化重启的时候把我们之前落在磁盘里用户的指令加载出来,接下来我们就开始实现这几个方法

首先是NewAofHandler,他的实现逻辑首先是读取aof文件名,给database赋值,然后是打开aof文件,如果没有这个文件我们创建文件,如果有这个文件我们打开这个文件,将文件填充到aofFile字段,理论上我们的AofHandler初始化过程就已经完成了,但目前还缺两个细节,一个是在初始化AofHandler的时候是系统刚刚启动的时候,我们要把之前写在硬盘里的aof文件加载恢复,另一个是对channel的操作,我们后面补

func NewAofHandler(database databaseface.Database) (*AofHandler, error) {handler := &AofHandler{}handler.aofFilename = config.Properties.AppendFilenamehandler.database = database//Loadaofile, err := os.OpenFile(handler.aofFilename, os.O_APPEND|os.O_CREATE|os.O_RDWR, 0600)if err != nil {return nil, err}handler.aofFile = aofile//channelreturn handler, nil
}

然后是Add功能,他的函数入参有分数据库DB所引和具体指令,业务逻辑就是新建payload并把函数入参组装成payload塞到channel里面

http://www.yayakq.cn/news/165275/

相关文章:

  • 制作网站404页面个人网页设计论文的开题报告
  • 网站建设小程序公众号推广开发参考消息电子版在线阅读
  • 网站开发 原理人力资源公司简介模板
  • 建站用哪个模板好企业网站建设费用会计科目
  • 公司网站备案号青岛房产网官网网址
  • 学生管理系统网站wordpress 顶部菜单
  • wordpress 腾讯验证码低价自适应网站建设优化建站
  • 创建网站的软件wordpress d7
  • 申请号的网站重庆渝中区企业网站建设联系电话
  • 有哪些好的做兼职网站美食网站建设的栏目和模板
  • 济南市做网站公司qq空间刷赞推广网站
  • 网站意义html手机网站模板
  • pc网站建设新八建设集团网站
  • 做视频网站赚钱微信 html5 网站
  • 重庆网站建设狐灵科技wordpress写文章报错
  • 石家庄哪里做网站比较好企业宣传片报价明细
  • 购物网站设计流程图如何备份wordpress站点
  • 建设一个域名抢注的网站三门峡市建设局官方网站
  • 上传网站中ftp地址写什么wordpress外贸网站增加个博客栏
  • google seo网站 被k详情页设计思路遵循哪五个营销环节
  • 企业网站建设的目的论文wordpress单机版
  • 湘阴网站建设公关公司官网
  • 威海泰浩建设集团有限公司网站网页设计实验总结100字
  • 代刷网站搭建教程网上最好购物网站
  • 厦门图书馆网站建设四川建设考试网
  • 购买游戏软件做网站沈阳建设工程信息网查询
  • php+mysql网站开发教程北京百度竞价
  • 网站快速收录平台网站快速排名
  • 国外网站流量查询北京市招投标公共服务平台官网
  • seo网站关键词优化多少钱大作设计网站