code: def lru_for_evict(cache_dict, evict_number=1):
      
      if not isinstance(cache_dict, collections.OrderedDict):
          raise ValueError('Not supported type %s' % type(cache_dict))
      evicted_keys = []
      if len(cache_dict) < evict_number:
          evict_number = len(cache_dict)
      for i in range(evict_number):
          item = cache_dict.popitem(last=False)
          evicted_keys.append(item[0])
      return evicted_keys
docs: 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