Use FIFO(First In First Out) strategy for evicting, it will find an item by earliest birthday date then remove it.

    Test:
    >>> from common_cache import CacheItem
    >>> dict = {}
    >>> dict['a'] = CacheItem(key='a', value=0, expire=5)
    >>> dict['b'] = CacheItem(key='b', value=1, expire=5)
    >>> dict['c'] = CacheItem(key='c', value=2, expire=5)
    >>> len(dict)
    3
    >>> evicted_keys = fifo_for_evict(dict, evict_number=2)
    >>> len(dict)
    1
    >>> len(evicted_keys)
    2
    >>> evicted_keys
    ['a', 'b']
    >>> evicted_keys = fifo_for_evict(dict, evict_number=10)
    >>> len(dict)
    0
    >>> len(evicted_keys)
    1

def fifo_for_evict(cache_dict, evict_number=1):
    """
    Use FIFO(First In First Out) strategy for evicting, it will find an item by earliest birthday date then remove it.

    Test:
    >>> from common_cache import CacheItem
    >>> dict = {}
    >>> dict['a'] = CacheItem(key='a', value=0, expire=5)
    >>> dict['b'] = CacheItem(key='b', value=1, expire=5)
    >>> dict['c'] = CacheItem(key='c', value=2, expire=5)
    >>> len(dict)
    3
    >>> evicted_keys = fifo_for_evict(dict, evict_number=2)
    >>> len(dict)
    1
    >>> len(evicted_keys)
    2
    >>> evicted_keys
    ['a', 'b']
    >>> evicted_keys = fifo_for_evict(dict, evict_number=10)
    >>> len(dict)
    0
    >>> len(evicted_keys)
    1
    """
    ordered_dict = sorted(cache_dict.items(), key=lambda t: t[1]['birthday'])
    evicted_keys = []
    if len(cache_dict) < evict_number:
        evict_number = len(cache_dict)
    for i in range(evict_number):
        item = ordered_dict[i]
        key = item[0]
        cache_dict.pop(key)
        evicted_keys.append(key)
    return evicted_keys