/// <summary> /// 创建数据库快照,可用于快速读取数据库最新的数据。 /// </summary> /// <returns>返回一个快照。</returns> public Snapshot CreateSnapshot() { var result = new Snapshot(LevelDBInterop.leveldb_create_snapshot(this._handle), this); GC.KeepAlive(this); return(result); }
public void Snapshot() { // modify db var writeOptions = LevelDBInterop.leveldb_writeoptions_create(); this.InnerPut(writeOptions, "key1", "value1"); LevelDBInterop.leveldb_writeoptions_destroy(writeOptions); // create snapshot var snapshot = LevelDBInterop.leveldb_create_snapshot(Database); // modify db again writeOptions = LevelDBInterop.leveldb_writeoptions_create(); this.InnerPut(writeOptions, "key2", "value2"); LevelDBInterop.leveldb_writeoptions_destroy(writeOptions); // read from snapshot var readOptions = LevelDBInterop.leveldb_readoptions_create(); LevelDBInterop.leveldb_readoptions_set_snapshot(readOptions, snapshot); var val1 = this.InnerGet(readOptions, "key1"); Assert.Equal("value1", val1); var val2 = this.InnerGet(readOptions, "key2"); Assert.Null(val2); LevelDBInterop.leveldb_readoptions_destroy(readOptions); // release snapshot LevelDBInterop.leveldb_release_snapshot(Database, snapshot); snapshot = IntPtr.Zero; }