typedef struct yumei_cache_map_data_s yumei_cache_map_data_t;struct yumei_cache_map_data_s{int key[8];int times;int start_time;void* data;yumei_cache_map_data_t* next;};
times是指这个数据被查询过多少次,start_time 则是开始查询时间,这两个参数是为了新陈代谢用的,比如一个数据在昨天天被查了30次,times=30,在昨天会被当
成频繁数据加到缓存里,但是今天一次都没有查过,这样的数据就要被淘汰出去。
定义完了数据结构,,就剩下算法了,主要推荐两种:
1.红黑树
2.hash map
C里用的红黑树比较多,另一些语言比如JAVA,Phthon用的 hash map较多,两者各有优点。
红黑树的查询速度不见得会比 hash的快,但是会很稳定,后面文章我再讲一下吧。
架构设计讲求透明性,上面定义的这些结构是对外不可见的,对外的文件接口应该是这样:
int yumei_cache_module_init();int yumei_cache_module_release();int yumei_cache_insert( int *key, void* data );int yumei_cache_get( int* key, void** data );int yumei_cache_del( int* key );
在模块内部定义一个全局变量就可以了。
如果追求通用性,则需要重新定义接口:
孤独是一种无奈的选择,孤独是因为没有找到合适的同行者,