多阶hash,可以hash bucket_time次,如果都冲突了,操作失败。
1、检查barrier
2、检查head,通过crc32检查head_info重要区域(该文件结构的bucket_time、bucket_len、max_block)
3、检查node zone.通过对非0 key的node节点与其对应的block节点进行crc32完整性检查,判断数据是否是完整的。
采用mmap对文件映射到内存中,并采用mlock进行锁定
1、落地依赖于操作系统msync机制
2、业务侧可以调用MemSync进行同步或者异步的落地(建议采用异步落地)
3、初始化时,可以设定多少次数据写入时,程序自动调用MemSync进行异步的落地(设为0时,取消自动调用MemSync)
node节点记录数据最新修改时间,在初始化的时候,业务自定义数据过期时间,请求到达时根据当前时间判断数据是否过期(设为0时,取消数据过期机制)
msync频率: 0 依赖操作系统落地
[数据库大小]\[MS_ASYNC msync频率] | 0 | 1 | 100 | 1000 | 10000 |
512B | 76923 | 3333 | 5524 | 26315 | 66666 |
768B | 62500 | 3289 | 5434 | 24390 | 55555 |
1024B | 55555 | 3278 | 5376 | 21739 | 50000 |
1280B | 76923 | 3076 | 5291 | 22222 | 45454 |
5120B | 18518 | 2923 | 4484 | 12820 | 18181 |
5376B | 18181 | 2915 | 4366 | 12500 | 17241 |