Skip to content

Conversation

padraic-shafer
Copy link
Contributor

  • See build_key(key, namespace) is missing from some modules/classes #569 for more information
  • Use namespace for decorators get/set
    • Include build_key(key, namespace) in decorators.cached:
      • get_from_cache()
    • set_in_cache()
  • Use namespace for HitMissRatioPlugin key
    • Use namespace, if available, to build key that is passed
      to plugins.HitMissRatioPlugin.post_get()
  • Introduce key_filter for confirming key is in namespace
    • BaseCache.key_filter(key, namespace) returns True
      if key is in the namespace
    • backends.memory.SimpleMemoryBackend uses this to seleectively
      clear its cache for the given namespace

What do these changes do?

Keys with namespaces now work throughout the aiocache package

  • Use namespace for decorators get/set
  • Use namespace for HitMissRatioPlugin key
  • Introduce key_filter for confirming key is in namespace

Are there changes in behavior for the user?

Keys with namespaces now work throughout the aiocache package.
This includes using:

  • the @cached() decorator
  • the HitMissRatioPlugin plugin
  • the SimpleMemoryCache.clear() member

Related issue number

#569: build_key(key, namespace) is missing from some modules/classes

Checklist

  • I think the code is well written
  • Unit tests for the changes exist
  • Documentation reflects the changes
  • Add a new news fragment into the CHANGES folder
    • name it <issue_id>.<type> (e.g. 588.bugfix)
    • if you don't have an issue_id change it to the pr id after creating the PR
    • ensure type is one of the following:
      • .feature: Signifying a new feature.
      • .bugfix: Signifying a bug fix.
      • .doc: Signifying a documentation improvement.
      • .removal: Signifying a deprecation or removal of public API.
      • .misc: A ticket has been closed, but it is not of interest to users.
    • Make sure to use full sentences with correct case and punctuation, for example: Fix issue with non-ascii contents in doctest text files.

* See aio-libs#473: Deprecate using cache specific constructors
  * aio-libs#473
  * `Cache` class was introduced as a proxy for instantiating the different
    backends. There should be only one way of doing things and `Cache` is
    the preferred way of doing that so will deprecate the others.
* This is now applied to `cached._get_cache()`
* Include build_key(key, namespace) in decorators.cached:
    * get_from_cache()
    * set_in_cache()
* Use namespace, if available, to build key that is passed
  to plugins.HitMissRatioPlugin.post_get()
* `BaseCache.key_filter(key, namespace)` returns True
  if key is in the namespace
* `backends.memory.SimpleMemoryBackend` uses this to seleectively
  clear its cache for the given namespace
@padraic-shafer
Copy link
Contributor Author

Hi, do you have an feedback for this PR?

@Dreamsorcerer
Copy link
Member

Thanks, but will need a test that shows the incorrect behaviour.

Also, please update to latest master, thanks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants