Skip to main content
This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (pypi.python.org).
Help us improve Python packaging - Donate today!

A cache interface with python object-property interface.

Project Description

Cache object is general purpose object-property interface.

NOTE: This library is under rebooting. Do not update from under 0.6.x if you mind continuous rewriting.

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.backend.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.backend.memory import MemoryBackend
>>> from cacheobj.backend.memcache import MemcacheBackend
>>> from cacheobj.backend.redis import RedisBackend
>>>
>>> memory = MemoryBackend()
>>> 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
Release History

Release History

This version
History Node

0.9

History Node

0.8.2

History Node

0.8.1

History Node

0.8

History Node

0.6.4

History Node

0.6.3

History Node

0.6.2

History Node

0.6.1

History Node

0.6

History Node

0.5.1

History Node

0.5

History Node

0.4

History Node

0.3

History Node

0.2

History Node

0.1

Download Files

Download Files

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

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
cacheobj-0.9.tar.gz (6.4 kB) Copy SHA256 Checksum SHA256 Source Aug 6, 2013

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting