def lru_for_evict(cache_dict, evict_number=<NUM_LIT:1>):
if not isinstance(cache_dict, collections.OrderedDict):<EOL><INDENT>raise ValueError('<STR_LIT>' % type(cache_dict))<EOL><DEDENT>evicted_keys = []<EOL>if len(cache_dict) < evict_number:<EOL><INDENT>evict_number = len(cache_dict)<EOL><DEDENT>for i in range(evict_number):<EOL><INDENT>item = cache_dict.popitem(last=False)<EOL>evicted_keys.append(item[<NUM_LIT:0>])<EOL><DEDENT>return evicted_keys<EOL>
Use LRU(Least Recently Used) strategy for evicting, the item that last used of time is the earliest will be removed.
The parameter cache_dict must is an OrderedDict because its implementation based on the OrderedDict and reinsert key
and value when every time to get the cache, this operation will make the cache of the often used is in the
tail of OrderedDict and head of the OrderedDict is a cache of the least recently used.

Test:
>>> import collections
>>> from common_cache import CacheItem
>>> dict = {'a' : 0, 'b' : 1}
>>> lru_for_evict(dict)
Traceback (most recent call last):
    ...
ValueError: Not supported type <class 'dict'>
>>> cache = collections.OrderedDict()
>>> cache['a'] = CacheItem(key='a', value=0, expire=3)
>>> cache['b'] = CacheItem(key='b', value=1, expire=3)
>>> cache['c'] = CacheItem(key='c', value=2, expire=3)
>>> cache['d'] = CacheItem(key='d', value=3, expire=3)
>>> lru_for_evict(cache)
['a']
>>> len(cache)
3
>>> lru_for_evict(cache, evict_number=2)
['b', 'c']
>>> len(cache)
1
>>> lru_for_evict(cache, evict_number=10)
['d']
>>> len(cache)
0