liberation/redis-limpyd — pull request #29 by twidi (2012-07-05 17:11:49+00:00)
Title: Make {List|Set|SortedSet|Field indexables

Indexes need more work than for simple IndexableFields as we have here
many values in each field.
A naive implementation is to simply deindex all existing values, call
the the wanted redis command, then reindex all.
When possible, each commands of each impacted fields are done by
catching values to index/deindex, to only do this work for needed
values.
It's the case for almost all defined commands, except ones where bulk
removing is done, as zremrange* for sorted set and ltrim (and lrem in
some cases) for lists (for these commands, the naive algorithm defined
above is used, so use them carefully).