Over a million developers have joined DZone.

New Open Source Cache System

DZone's Guide to

New Open Source Cache System

· ·
Free Resource

The SHOP.COM Cache System is now available at http://code.google.com/p/sccache/

The SHOP.COM Cache System is an object cache system that...

  • is an in-process cache and external, shared Cache
  • is horizontally scalable
  • stores cached objects to disk
  • supports associative keys
  • is non-transactional
  • can have any size key and any size data
  • does auto-GC based on TTL
  • is container and platform neutral

It was built in-house at SHOP.COM (by me) and has powered our website for years. We are open-sourcing it in the hope that it will be useful to others and to get some help in its maintenance.

This is our first open source attempt and we'd appreciate any help and comments.

Here's a FAQ:

Why another cache?
At SHOP.COM, we've tried almost every cache system there is. None of them do what we need.

What's different about SHOP.COM Cache?
* It doesn't try to be a database
* It can handle very large objects and very large keys
* Cached objects can survive a server crash
* Has both a local (in-memory) and external/shared cache
* Extremely fast - >20K operations a minute (depending on hardware)
* Highly scalable - sccache scales horizontally extremely well

What kinds of things can be cached?
Any Serializable object. In practice, it's common to cache database result sets, HTML pages, HTTP sessions, etc.

Why open source it?
Our cache was written by one engineer (me). We'd like more eyes on the code and help maintaining it.

How stable is the code?
sccache has been used at SHOP.COM in one form or another for 10 years. So, it's stable enough to use in our production environment. However, I've had to make some changes to separate it into an open source library. We are not currently running the open source version at SHOP.COM. I'll post when we make the change.



Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}