use localcache for multidb
parent
61b6bdd3aa
commit
ece8dd7f60
|
|
@ -1284,7 +1284,33 @@
|
|||
this.databases.push(arguments[i]);
|
||||
}
|
||||
this.deltas = new Deltas(this.primary());
|
||||
this.cachedb = new NamespacedDatabase("cache", new Local()),
|
||||
this.scheduleSync();
|
||||
this.syncCacheWithPrimary();
|
||||
}
|
||||
|
||||
syncCacheWithPrimary()
|
||||
{
|
||||
this.syncAWithB(this.cache(), this.primary());
|
||||
}
|
||||
|
||||
syncReplicasWithCache()
|
||||
{
|
||||
this.replicas().slice(1).forEach((replica) => {
|
||||
this.syncAWithB(replica, this.cache());
|
||||
});
|
||||
}
|
||||
|
||||
syncAWithB(a, b)
|
||||
{
|
||||
b.forEach((k) => {
|
||||
a.set(k, b.get(k));
|
||||
});
|
||||
}
|
||||
|
||||
cache()
|
||||
{
|
||||
return this.cachedb;
|
||||
}
|
||||
|
||||
primary()
|
||||
|
|
@ -1294,15 +1320,17 @@
|
|||
|
||||
replicas()
|
||||
{
|
||||
return this.databases.slice(1);
|
||||
return [this.cache()].concat(this.databases.slice(1));
|
||||
}
|
||||
|
||||
scheduleSync()
|
||||
{
|
||||
setInterval(() => { this.sync(); }, 15 * 1000);
|
||||
setInterval(() => { this.syncDeltas(); }, 10 * 1000);
|
||||
setInterval(() => { this.syncCacheWithPrimary(); }, 120 * 1000);
|
||||
setInterval(() => { this.syncReplicasWithCache(); }, 123 * 1000);
|
||||
}
|
||||
|
||||
sync()
|
||||
syncDeltas()
|
||||
{
|
||||
var n = this.pendingSyncCount();
|
||||
try
|
||||
|
|
@ -1338,7 +1366,7 @@
|
|||
|
||||
replicate(key)
|
||||
{
|
||||
var value = this.primary().get(key);
|
||||
var value = this.cache().get(key);
|
||||
this.replicas().forEach((database) => {
|
||||
if (value)
|
||||
database.set(key, value);
|
||||
|
|
@ -1349,7 +1377,7 @@
|
|||
|
||||
get(key)
|
||||
{
|
||||
return this.primary().get(key);
|
||||
return this.cache().get(key);
|
||||
}
|
||||
|
||||
set(key, value)
|
||||
|
|
@ -1388,7 +1416,7 @@
|
|||
|
||||
forEach(foo)
|
||||
{
|
||||
this.databases[0].forEach((key) => {
|
||||
this.cache().forEach((key) => {
|
||||
foo(key);
|
||||
});
|
||||
}
|
||||
|
|
@ -1438,7 +1466,6 @@
|
|||
var k = this.deprefix(key);
|
||||
if (k)
|
||||
{
|
||||
console.log("parsed key", k);
|
||||
foo(k);
|
||||
}
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in New Issue