Skip to content

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also compare across forks.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also compare across forks.
Checking mergeability… Don’t worry, you can still create the pull request.
Commits on Apr 04, 2012
@tsee tsee Experimental support for on-expiration messaging for strings
With this change, the Redis server will dispatch a 0MQ message whenever
a key (of simple string type) expires. This is useful when using
Redis as a persistent, reliable hot cache and the data needs to be
expired into a cold storage solution.

0MQ was chosen for simplicity, low overhead and high message throughput
so that Redis isn't slowed down significantly.
@tsee tsee Undo accidentally committed local change 260c319
Commits on Apr 05, 2012
@tsee tsee Support for multiple 0MQ endpoints 7585ac0
Commits on Apr 10, 2012
@tsee tsee Actually implement 0MQ HWM setting 0dc5127
@tsee tsee Migrate remaining hobo logging to redisLog 8bfea87
@tsee tsee Initialize 0MQ early in expectation of moving to bind() bac2c3b
@tsee tsee Bind to the 0MQ endpoints and send PUSH messages
Used to be connect() and PUB, but it turns out that this being the
server, it's easier to write clients that deal with disappearing
Commits on Apr 20, 2012
@tsee tsee The expiry client must nowadays connect 56b565b
@tsee tsee Notice about 0MQ socket connections d504a41
@tsee tsee Minor refactoring for future handling of other types
Includes a change to the expiry protocol that prepends an identifier for
the type.
@tsee tsee Make private function static 916ab83
@tsee tsee feeble attempts at dumping hashes c0ab96b
Commits on Apr 21, 2012
@tsee tsee Use redis dumping facilities for writing to 0mq
This is using some code written by Lourens Naudé at
@tsee tsee Hack towards dumping with simple protocol
1st frame: Header of dbno and value type
2nd frame: Key string
3rd frame: Value

A string is dumped as (size_t)length and length bytes of string.
The interpretation of the value depends on the value type, which
is either a string as per above, or a has encoded as:
  - (size_t)nhashkeys
  - nhashkeys alternating key/value pairs
    => key and value both being a string as per above

The hash dumping is not implemented yet.
@tsee tsee Implement dumping ziplists
Moderately untested...
@tsee tsee Implement dumping hashes...
... again, not well tested.
@tsee tsee No need to write 8byte types on 64bit machines 133a130
@tsee tsee expiry example dumper client for hash and string 227f335
@tsee tsee Merge remote-tracking branch 'upstream/unstable' into msg_on_expire
Commits on Apr 24, 2012
@tsee tsee 0MQ expiry message docs 4747c52
Commits on Apr 26, 2012
@tsee tsee Fix hash/dict dumping to zmq socket
Needed a factor of two: key AND value for dicts
Commits on May 21, 2012
@tsee tsee Make function static where possible 00df4ad
@tsee tsee Fix strict aliasing violation 0e65fe7
@tsee tsee First stab at implementing expire looping
In a nutshell, this feature will enable stuffing a hash back into Redis
when it expires, while resetting expiration and keeping track of how
often it has done the expire loop. Eventually, when that counter hits a
configurable limit, it won't be reinserted.

This is useful as a oh-my-god-is-this-painful workaround for both
unreliable messaging and the
this-key-is-in-flight-and-not-available-from-anywhere race condition.
The worker processes that pick up the expired messages are expected
to issue an explicit delete from Redis when they've successfully
inserted the record into the long term storage. That breaks the cycle.
@tsee tsee Note the expire loop config in the example config 7682548
Commits on May 22, 2012
@tsee tsee expire example script compile fixlet 2aaa5e6
Commits on May 23, 2012
@tsee tsee Working expire loops f192bb0
Commits on Jun 03, 2012
@tsee tsee More aggressive expiration 5823430
Something went wrong with that request. Please try again.