Skip to main content
Cache object
~~~~~~~~~~~~

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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cacheobj-0.6.1.tar.gz (4.3 kB view details)

Uploaded Source

File details

Details for the file cacheobj-0.6.1.tar.gz.

File metadata

  • Download URL: cacheobj-0.6.1.tar.gz
  • Upload date:
  • Size: 4.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for cacheobj-0.6.1.tar.gz
Algorithm Hash digest
SHA256 61a8cac6180a8a4532daa367183eee51a6e7be5d8f5890a08764616ea8886280
MD5 2c76b425ecaef7b5aaac6cdfa40ace1b
BLAKE2b-256 56a20f2edb8159d6e6bee97c3894ee27abfb88eb2c9e2977a48a5ebc3336d236

See more details on using hashes here.

Release history Release notifications | RSS feed

0.9

1 file

0.8.2

1 file

0.8.1

1 file

0.8

1 file

0.6.4

1 file

0.6.3

1 file

0.6.2

This release

0.6.1 This release

1 file

0.6

1 file

0.5.1

1 file

0.5

1 file

0.4

1 file

0.3

1 file

0.2

1 file

0.1

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page