github.com/weedge/lib@v0.0.0-20230424045628-a36dcc1d90e4/container/sortlist/readme.md (about)

     1  #### 介绍
     2  
     3  1. 使用[skiplist](https://github.com/huandu/skiplist) 封装成 sortedlist(MemberScore), 支持并发场景,Range操作O(log(n)+m)
     4  2. 对container/list进行修改,加入score([]byte,可以改成Comparable接口来支持不同类型排序),支持并发场景,Range操作O(n+m)
     5  
     6  #### 使用场景
     7  
     8  两者可用于从 redis zset 通过 `ZRANGE ** start stop WITHSCORES` (O(log(n)+m))或 `ZRANGEBYSCORE ** min max WITHSCORES`(O(log(n)+m)) 获取的数据放入本地进程SortedList结构中使用,减少网络io,并发请求大时,缓解出现热key的情况;
     9  
    10  本地缓存可以选用LRU来进行淘汰;
    11  
    12  tips: 写入redis zset的数据是时序append加入到有序集合中的,不能出现更新历史数据的情况,以防顺序变化,导致本地缓存不一致 
    13  
    14  #### references
    15  
    16  1. [wiki: Skip list](https://en.wikipedia.org/wiki/Skip_list)
    17  1. [Skip Lists:A Probabilistic Alternative to Balanced Trees](https://15721.courses.cs.cmu.edu/spring2018/papers/08-oltpindexes1/pugh-skiplists-cacm1990.pdf)
    18