implement the lru cache based on doublylinkedlist