From 7f8f2c0b93f7ef332b5abfc6098b5ff54d713c6d Mon Sep 17 00:00:00 2001 From: wangxuefei <10225501435@stu.ecnu.edu.cn> Date: Thu, 7 Nov 2024 15:08:54 +0800 Subject: [PATCH] commit the result of test_ttl to complete the README.md --- README.md | 5 +++++ picture/leveldb_ttl实验结果.png | Bin 0 -> 39633 bytes 2 files changed, 5 insertions(+) create mode 100644 picture/leveldb_ttl实验结果.png diff --git a/README.md b/README.md index 35499fa..f0b7ac8 100644 --- a/README.md +++ b/README.md @@ -124,7 +124,12 @@ void DBImpl::CompactRange(const Slice* begin, const Slice* end) { } } ``` +## 4. 实验结果 +下面是我们跑仓库提供的test_ttl的结果: +![picture](picture/leveldb_ttl实验结果.png) + +可以看到,两个test都能通过。 ## 实验中遇到的问题 ### 1. TTL存储的位置以及存储方式 我们最初的想法是把TTL跟value存储在一起,形式为``,这样Put操作会很简单,仅仅把两个字符串拼接起来即可,但这样的话,在Get操作中时,无法判断从何处分割TTL和value,所以我们决定在TTL和value之间添加一个标志符,存放形式改为``,这样,在Get操作时,只需先找到第一个下划线,下划线前面的为TTL,后面的为value,这样就能把TTL和value区分开来。但还有一个问题,判断条件为:`写入数据的时间+ TTL < 读取数据的时间 `,如果仅存放TTL,虽然在调用get时我们可以获得读取数据的时间,并通过解码value获得TTL,但我们没有办法获得写入数据的时间,所以只能通过在Put操作时,把写入数据的时间也写入value中,这样在Get时,就能获得写入数据的时间,从而判断是否过期。所以,我们又把value的形式改为``,这样,通过两个下划线把TTL、写入时间和value区分开来,就能实现在get操作时判断是否过期。但我们又想到,既然在get操作解码得到TTL和写入时间之后要加在一块,并且TTL和写入时间都是在get操作时与value进行编码,那么我们为什么不在get操作时就把TTL和写入时间加在一起,再与value编码呢,把写入时间+TTL记为DDL,这样就可以把value编码为``,在get操作时,只需解码得到DDL,然后拿当前时间跟DDL作比较,即可知道数据是否过期。 diff --git a/picture/leveldb_ttl实验结果.png b/picture/leveldb_ttl实验结果.png new file mode 100644 index 0000000000000000000000000000000000000000..6585c6e66aeae2ccc0dac9cad6c2d5f8cd3260da GIT binary patch literal 39633 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 Z_Wi(kT4mYMis2>T*|pQnv50Ua@n1E~^UVMN literal 0 HcmV?d00001