Source code for redis_func_cache.policies.mru
"""Most Recently Used eviction cache policies."""
from typing import final
from ..mixins.hash import PickleMd5HashMixin
from ..mixins.scripts import MruScriptsMixin
from .base import BaseClusterMultiplePolicy, BaseClusterSinglePolicy, BaseMultiplePolicy, BaseSinglePolicy
__all__ = ("MruPolicy", "MruMultiplePolicy", "MruClusterPolicy", "MruClusterMultiplePolicy")
class _MruPolicyExtArgsMixin:
def calc_ext_args(self, *args, **kwargs):
return ("mru",)
[docs]
@final
class MruPolicy(_MruPolicyExtArgsMixin, MruScriptsMixin, PickleMd5HashMixin, BaseSinglePolicy):
"""
MRU eviction policy, single key pair.
.. inheritance-diagram:: MruPolicy
:parts: 1
All decorated functions share the same Redis key pair.
"""
__key__ = "mru"
[docs]
@final
class MruMultiplePolicy(_MruPolicyExtArgsMixin, MruScriptsMixin, PickleMd5HashMixin, BaseMultiplePolicy):
"""
MRU eviction policy, multiple key pairs.
.. inheritance-diagram:: MruMultiplePolicy
:parts: 1
Each decorated function has its own Redis key pair.
"""
__key__ = "mru-m"
[docs]
@final
class MruClusterPolicy(_MruPolicyExtArgsMixin, MruScriptsMixin, PickleMd5HashMixin, BaseClusterSinglePolicy):
"""
MRU eviction policy with Redis cluster support, single key pair.
.. inheritance-diagram:: MruClusterPolicy
:parts: 1
All decorated functions share the same Redis key pair.
"""
__key__ = "mru-c"
[docs]
@final
class MruClusterMultiplePolicy(_MruPolicyExtArgsMixin, MruScriptsMixin, PickleMd5HashMixin, BaseClusterMultiplePolicy):
"""
MRU eviction policy with Redis cluster support, multiple key pairs.
.. inheritance-diagram:: MruClusterMultiplePolicy
:parts: 1
Each decorated function has its own Redis key pair.
"""
__key__ = "mru-cm"