Closed gcxfd closed 2 years ago
运行程序 https://github.com/rmw-lib/agatedb/tree/cli/examples
db.update(|tx| { use agatedb::{key_with_ts, util::unix_time}; use bytes::BytesMut; let key = key_with_ts(BytesMut::from("3"), unix_time()); tx.set(key, "2".into()) })?;
然后读取,读取不到
但是这样写入就可以读取到
pub fn set(&self, key: impl Into<BytesMut>, value: impl Into<Bytes>) -> Result<()> { use crate::util::unix_time; let key = key_with_ts(key.into(), unix_time()); let req = Request { entries: vec![Entry::new(key, value.into())], ptrs: vec![], done: None, }; self.write_to_lsm(req) }
get函数定义如下
pub fn get(&self, key: impl Into<BytesMut>) -> Result<Value> { let key = key_with_ts(key.into(), std::u64::MAX); self.core.get(&key) }
运行演示 截图如下
write_to_lsm我感觉是一个写入磁盘操作,是不是Transaction执行之后也需要手工运行个什么来写入磁盘?难道数据库被drop的时候不会自动写入磁盘吗?
我记得redis和rocksdb都一个设置,可以配置落盘的周期,比如让程序每3秒钟落盘一次,有这样的配置吗?
我发现了,不能用key_with_ts
运行程序 https://github.com/rmw-lib/agatedb/tree/cli/examples
然后读取,读取不到
但是这样写入就可以读取到
get函数定义如下
运行演示 截图如下
write_to_lsm我感觉是一个写入磁盘操作,是不是Transaction执行之后也需要手工运行个什么来写入磁盘?难道数据库被drop的时候不会自动写入磁盘吗?
我记得redis和rocksdb都一个设置,可以配置落盘的周期,比如让程序每3秒钟落盘一次,有这样的配置吗?