Skip to main content

A cache interface with python object-property interface.

Project description

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

Project details


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.

Supported by

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