~~~~~~~~~~~~
Cache object is general purpose object-property interface.
Example
-------
There is some pre-defined common types.
in-memory, memcache and redis backends are included. And its common general interfaces too.
>>> from cacheobj.redis import LocalRedisObject
>>> class UserCache(LocalRedisObject):
... _properties = ['username', 'name']
...
>>> user = UserCache(id=10)
>>> print user.username
None
>>> user.username = 'username'
>>> user.name = 'Real Name'
>>> print user.username
username
>>> user10 = UserCache(id=10)
>>> print user10.username
username
Cache is stored with class name and given id.
>>> print user.get('username', use_cache=True)
username
If you don't want to hit backend again, there is use_cache option for local memory cache.
For non-local cache backend, try a easy generator.
>>> from cacheobj.redis import get_redis_object
>>> import redis
>>> MyRedisObject = get_redis_object(redis.ConnectionPool()) # any connection pool
>>> class MyUserCache(MyRedisObject):
... pass
...
Custom Backend
--------------
Upper examples are shortcut for basic configuration.
>>> from cacheobj import SimpleCacheObject
>>> from cacheobj.backends.memcache import MemcacheBackend
>>> def get_backend():
... return MemcacheBackend(['127.0.0.1:11211'])
...
>>> class UserCache(SimpleCacheObject):
... _backend_generator = staticmethod(get_backend)
... _properties = ['username', 'name']
...
This object works as upper UserCache object.
You can put custom backend with this.
See source code to write a backend. It is just a few lines.
Composite Example
-----------------
You can composite multiple backends for an object.
>>> from cacheobj import CacheObject
>>> from cacheobj.backends.inmemory import InMemoryBackend
>>> from cacheobj.backends.memcache import MemcacheBackend
>>> from cacheobj.backends.redis import RedisBackend
>>>
>>> memory = InMemoryBackend()
>>> memcache = MemcacheBackend()
>>> redis = RedisBackend()
>>>
>>> class CompositeCache(CacheObject):
... _backends = {
... memory: ['mem1', 'mem2'],
... memcache: ['mc1', 'mc2'],
... redis: ['redis1', 'redis2'],
... }
...
>>> c = CompositeCache()
>>> c.mem1 # with backend memory
>>> c.mc1 # with backend memcache
>>> c.redis1 # with backend redis
Metadata
Release files for cacheobj 0.6.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| cacheobj-0.6.1.tar.gz | 4.3 kB | Without provenance | Details for cacheobj-0.6.1.tar.gz |
Release files / cacheobj-0.6.1.tar.gz
| Download URL | cacheobj-0.6.1.tar.gz |
|---|---|
| Size | 4.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
61a8cac6180a8a4532daa367183eee51a6e7be5d8f5890a08764616ea8886280
|
|
BLAKE2b-256 checksum How to use checksums |
56a20f2edb8159d6e6bee97c3894ee27abfb88eb2c9e2977a48a5ebc3336d236
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Security for cacheobj 0.6.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.