I've tried various persistence mechanisms in the past but SPOPS for me comes out on top. At first glance the documentation makes it seem a little daunting, but with a bit of persistence (no pun intended) you get to see what SPOPS is really about. What I found was a library that let's me easily set up object persistence but at the same time is highly configurable. Performance seems to be pretty good too. The only downside is the documentation - there is so much of it that the lack of a proper index can sometimes make stuff hard to find. Otherwise a very complete tool which I can highly recommend.