##### SUMMARY
The current implementation of CachePluginAdjudicator is unable to flush the cache without loading everything in memory using `load_whole_cache`. Iterating over the plugins cache keys would avoid that step.

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
ansible.plugins.cache
CachePluginAdjudicator

##### ANSIBLE VERSION
```
ansible 2.9.6
  config file = /home/harm/dev/closso-ansible/ansible.cfg
  configured module search path = ['/home/harm/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /home/harm/.virtualenvs/ansible/lib/python3.7/site-packages/ansible
  executable location = /home/harm/.virtualenvs/ansible/bin/ansible
  python version = 3.7.3 (default, Apr  3 2019, 05:39:12) [GCC 8.3.0]
```

##### CONFIGURATION
```
CACHE_PLUGIN(/home/harm/dev/closso-ansible/ansible.cfg) = jsonfile
CACHE_PLUGIN_CONNECTION(/home/harm/dev/closso-ansible/ansible.cfg) = ./cache/fact/
CACHE_PLUGIN_TIMEOUT(/home/harm/dev/closso-ansible/ansible.cfg) = 86400
DEFAULT_CALLBACK_PLUGIN_PATH(/home/harm/dev/closso-ansible/ansible.cfg) = ['/home/harm/dev/closso-ansible/plugins/callback', '/usr/share/ansible/plugins/callback']
DEFAULT_CALLBACK_WHITELIST(/home/harm/dev/closso-ansible/ansible.cfg) = ['profile_tasks']
DEFAULT_FILTER_PLUGIN_PATH(/home/harm/dev/closso-ansible/ansible.cfg) = ['/home/harm/dev/closso-ansible/plugins/filter', '/usr/share/ansible/plugins/filter']
DEFAULT_GATHERING(/home/harm/dev/closso-ansible/ansible.cfg) = smart
DEFAULT_HOST_LIST(/home/harm/dev/closso-ansible/ansible.cfg) = ['/home/harm/dev/closso-ansible/netbox_inventory.yml']
DEFAULT_LOOKUP_PLUGIN_PATH(/home/harm/dev/closso-ansible/ansible.cfg) = ['/home/harm/dev/closso-ansible/plugins/lookup', '/usr/share/ansible/plugins/lookup']
DEFAULT_ROLES_PATH(/home/harm/dev/closso-ansible/ansible.cfg) = ['/home/harm/dev/closso-ansible/roles']
DEFAULT_VARS_PLUGIN_PATH(/home/harm/dev/closso-ansible/ansible.cfg) = ['/home/harm/dev/closso-ansible/plugins/vars', '/usr/share/ansible/plugins/vars']
DOC_FRAGMENT_PLUGIN_PATH(/home/harm/dev/closso-ansible/ansible.cfg) = ['/home/harm/dev/closso-ansible/plugins/doc_fragments', '/usr/share/ansible/plugins/doc_fragments']
HOST_KEY_CHECKING(/home/harm/dev/closso-ansible/ansible.cfg) = False
INVENTORY_CACHE_ENABLED(/home/harm/dev/closso-ansible/ansible.cfg) = True
INVENTORY_ENABLED(/home/harm/dev/closso-ansible/ansible.cfg) = ['host_list', 'script', 'yaml', 'ini', 'netbox']
TRANSFORM_INVALID_GROUP_CHARS(/home/harm/dev/closso-ansible/ansible.cfg) = never
USE_PERSISTENT_CONNECTIONS(/home/harm/dev/closso-ansible/ansible.cfg) = True
```

##### STEPS TO REPRODUCE

```
>>> cache = CachePluginAdjudicator('jsonfile', _uri='./cache/netbox')
>>> cache._plugin.keys()
['netbox_b42bfs_d14a8', 'netbox_b42bfs_81f3c']
>>> cache.keys()
dict_keys([])
>>> cache.flush()
>>> cache._plugin.keys()
['netbox_b42bfs_d14a8', 'netbox_b42bfs_81f3c']
>>> cache.keys()
dict_keys([])
>>> cache.load_whole_cache()
>>> cache.keys()
dict_keys(['netbox_b42bfs_d14a8', 'netbox_b42bfs_81f3c'])
>>> cache.flush()
>>> cache.keys()
dict_keys([])
>>> cache._plugin.keys()
[]
```

##### EXPECTED RESULTS

Cache should be flushed without loading everything in memory.


##### ACTUAL RESULTS

`cache.flush()` does nothing.

prefix = self.get_option('_prefix')
        if prefix:
            cachefile = "%s/%s%s" % (self._cache_dir, prefix, key)
        else:
            cachefile = "%s/%s" % (self._cache_dir, key)
        return cachefile
    def get(self, key):
        """ This checks the in memory cache first as the fact was not expired at 'gather time'
        and it would be problematic if the key did expire after some long running tasks and
        user gets 'undefined' error in the same play """
        if key not in self._cache:
            if self.has_expired(key) or key == "":
                raise KeyError
            cachefile = self._get_cache_file_name(key)
            try:
                value = self._load(cachefile)
                self._cache[key] = value
            except ValueError as e:
                display.warning("error in '%s' cache plugin while trying to read %s : %s. "
                                "Most likely a corrupt file, so erasing and failing." % (self.plugin_name, cachefile, to_bytes(e)))
                self.delete(key)
                raise AnsibleError("The cache file %s was corrupt, or did not otherwise contain valid data. "
                                   "It has been removed, so you can re-run your command now." % cachefile)
            except (OSError, IOError) as e:
                display.warning("error in '%s' cache plugin while trying to read %s : %s" % (self.plugin_name, cachefile, to_bytes(e)))
                raise KeyError
            except Exception as e:
                raise AnsibleError("Error while decoding the cache file %s: %s" % (cachefile, to_bytes(e)))
        return self._cache.get(key)
    def set(self, key, value):