18.3 redis

因为之前我们server不存东西 

我们 发现 后打开的网页 是接手不到之前的变化,不能更新到最新的变化的。

我们需要做到server给client发最新的代码已达到同步

我们有三种做法同步到最新的代码

1.保存每一一个change events 

(Keep All Change Events)

[event_1,event_2,......event_n]

每一个change events都记录下在一个list里面 确定就是内容太多 繁杂(很多没必要的change 比如添加了一些代码 又删掉了一些代码,又重新写了一些代码,其实我只是要最新代码) 就很长 没必要

2.记录最新代码的快照信息(keep latest Snapshot) 缺点就是 server压力变大(需要维护一个editor内容),不能回滚。

3.记录(Combine Snapshot and change Events(Adopted))

{snapshot_n,[event_n,event_n+1.event_n+2.....]}

最佳 整合 1 2  的优点 做到 就保存1个小时之内的change evets,将一个小时前的做成Snapshotlist

这样既可以同步到最新的代码,又可以回滚,server压力又不大

我们先来完成第一种做法

我从client端开始 去service写个方法

buffer就是当前代码 

restoreBuffer()就是储存代码的方法

我们service  只需向server发出请求信息(要最新代码的list)“restoreBugger”既可

这样server端就知道你请求最新代码

所以,我们去editor去调用咱们 这个service

那么什么时候会调用这个service的这个方法呢?

肯定是昨晚itin初始化以后

主动调用一下

 ok 上面就是client端发送请求到最新代码的写法

下面写 server端收到这个‘restoreBuffer:’的请求后,如何返回最新的代码给client端?

我们可以将server端的内存中保存的各种change events 直接全部发给client 也可以 一个个events发

取决你如何设计,那么问题来了。如何保存在内存中呢?

这就引出了redis

为什么用redis呢? 因为可以将这些list保存在内容中

那么是不是全部都要保存呢?不是,不如编辑器里一个人都没有了,我们也不知道什么时候你会来,所以呢?我们将代码变化存在redis里面,保存(比如1h?)

我们先来安装redis

猜你喜欢

转载自www.cnblogs.com/PoeticalJustice/p/9382427.html