跳到主要内容

lru

简介

LRU cache 容器

组件接口

node_set

节点

成员变量

变量名类型初始值须初始化描述
keymixednil可选
valuemixednil可选
prevnode_setnil可选前驱节点
nextnode_setnil可选后继节点

成员方法

函数原型函数作用

LRUcache

LRU缓存

成员变量

变量名类型初始值须初始化描述
lru_mapmapnil可选LRU缓存映射
lru_usedint0可选当前已使用的缓存数量
lru_capacityint0可选缓存容量
headnode_setnil可选头节点
tailnode_setnil可选尾节点

成员方法

函数原型函数作用
mixed Set(mixed key, mixed value)设置lru缓存的key-value, 若长度超过预设长度,最近最少使用的key-value会被淘汰
mixed Get(mixed key)通过key获取在lru缓存中的value,该操作会更新key-value的淘汰顺序
void resize(int capacity_length)重设lru缓存的大小

样例


import pkg.lru.LRU_cache;

//To use lru cache class_map, need load static LRU_cache.gs
load_static(LRU_cache);

//New a lru cache and set length to 3.
LRUcache lru_cache = LRUcache.new(3);

//Put key-value.
//('S' is capital)
lru_cache.Set("key", "value");
lru_cache.Set("key1", "value1");
lru_cache.Set("key2", "value2");

//Lengths of key_value pairs will be longer than length 3.
lru_cache.Set("key3", "value3");

//The least recently used pair "key": "value" is eliminated, so we get nil here.
//('G' is capital)
write(lru_cache.Get("key"), "\n");

//Resize lru_cache length to 5.
lru_cache.resize(5);

//Lru_cache now can save 5 key-calue paris.
lru_cache.Set("key", "value");
lru_cache.Set("key4", "value4");

write(lru_cache.Get("key"), "\n");
write(lru_cache.Get("key1"), "\n");
write(lru_cache.Get("key2"), "\n");
write(lru_cache.Get("key3"), "\n");
write(lru_cache.Get("key4"), "\n");

//Actually there is a node_list in lru_cache.
write(lru_cache);

//Resize from 5 to 1, 4 key-value pairs will be poped out, only "key4":"value4" is still saved
lru_cache.resize(1);

write(lru_cache.Get("key4"), "\n");