对于简单的hash kv系统,数据的正确性该怎么测试?是不是只需要先set后get就行了呢?
真实的应用具备以下一些特点:
1. 读写分离:读和写在不同的线程、进程,甚至是不同的机器
2. 写少多读:写一次后会被读到很多次,随机读
3. 多线程读多线程写
4. 最终一致性:写成功后可能会返回旧值,但最终是新值, 对于启用了replciation功能的qstore系统存在这种情况。
5. 读和写可能会失败
6. 相同的key可能会写多次,value也会变化
7. 数据有过期时间

通用的测试方法:

简单kv系统的测试

说明:
1. 当添加了一条新kv,先找到key所在的桶,然后对桶加锁,然后保存该key的value的描述(起始位置、偏移量、操作类型、过期时间),并将该key加入到由key组成的循环队列的头部或尾部。
2. 当修改了一条kv,先找到key所在的桶,然后对桶加锁,然后将对该key的value的最新描述信息追加到最后一次对该key操作的item之后。
3. 只读循环队列的第一个key,然后移动队列头部到下一个位置,从它所在的桶(也需要加锁)找到最后一次操作的结果,如果不是删除操作或者时间已过期,就可以做对比测试
4. 需要对key的操作做合并和清理,避免内存一直增加。
5. 如果对key的操作序列不关注的话,每个key只需要有1个item就可以了。
 

 

转载于:https://blog.51cto.com/chengxiaojun/901659

相关文章:

  • 2022-12-23
  • 2021-08-13
  • 2021-11-20
  • 2022-12-23
  • 2021-12-17
  • 2021-09-21
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-01-07
  • 2022-12-23
  • 2022-12-23
  • 2021-08-03
  • 2021-07-06
  • 2021-09-16
  • 2021-11-07
相关资源
相似解决方案