ecodeclub / ecache

统一缓存 API
Apache License 2.0
12 stars 15 forks source link

基于红黑树的本地缓存实现 #5

Open flycash opened 1 year ago

flycash commented 1 year ago

在本地缓存实现里面,可以考虑使用不同的数据结构:

所以,可以提供一个基于红黑树的本地缓存实现。

该实现要求:

在 ekit 里面已经有了红黑树的实现,你可以直接使用。但是 ekit 里面的红黑树没有直接暴露出来(目前在internal 包里面),所以你可以先在本地的时候修改 ekit 的代码,暴露出来,然后提交合并请求的时候,在两个项目里面都提交合并请求。

flyhigher139 commented 1 year ago

跳表极端情况下退化为链表的概率很低吧?我前段时间在自己练手数据结构的库里实现了一份,明哥看看能用么?

考虑到正常情况下跳表的实现和易维护性比红黑树高很多,相应也更容易扩展,是不是实现一个基于跳表的本地缓存也有意义?

flycash commented 1 year ago

还是使用红黑树。虽然概率很低,但是如果你没有调整跳表的机制,那么还是不太合适。不是说不能用,而是说会出问题。大部分用户不具备排查跳表退化的性能问题。

flyhigher139 commented 1 year ago

好的,这个issue这周没人认领的话,下周我接过来搞搞看。今年我工作有变动,很久没有写代码了,很久也没参与开源了 :P