Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge cache implementation classes for each backend #684

Open
padraic-shafer opened this issue Mar 4, 2023 · 0 comments
Open

Merge cache implementation classes for each backend #684

padraic-shafer opened this issue Mar 4, 2023 · 0 comments
Milestone

Comments

@padraic-shafer
Copy link
Contributor

Background

Each backend cache implementation is currently split into two classes, with the "interface" class derived from the "backend" class.

  • SimpleMemoryCache subclasses SimpleMemoryBackend, which subclasses BaseCache[str].
  • MemcachedCache subclasses MemcachedBackend, which subclasses BaseCache[bytes].
  • RedisCache subclasses RedisBackend, which subclasses BaseCache[str].

Suggestion

Merge each pair into a single subclass of BaseClass. In other words, the ...Backend classes do not appear to provide any benefit or value by being distinct classes.

  • SimpleMemoryCache is highly bound to SimpleMemoryBackend, even in its name. It seems unlikely that anyone would use SimpleMemoryBackend directly, rather than using SimpleMemoryCache.
  • Also SimpleMemoryBackend does not appear to provide value as a base class for user customization. If a specialized memory cache is needed, one would probably derive from SimpleMemoryCache and override only what is needed, or derive from BaseCache if more extensive changes are required.

Question

Are any aiocache users relying on SimpleMemoryBackend, MemcachedBackend, RedisBackend classes, or could their functionality be merged into the corresponding ...Cache implementations?

@Dreamsorcerer Dreamsorcerer added this to the 1.0 milestone Mar 5, 2023
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

No branches or pull requests

2 participants