Commits on Feb 25, 2014
  1. Deprecate Redis Sentinel in 2.6.

    Everybody should use the more robust implementation shipped with 2.8.
    committed Feb 25, 2014
Commits on Dec 11, 2013
  1. Redis 2.6.17.

    committed Dec 11, 2013
  2. Merge pull request #847 from yossigo/repldboff-fix

    Fix wrong repldboff type which causes dropped replication in rare cases.
    committed Dec 11, 2013
Commits on Dec 10, 2013
Commits on Nov 11, 2013
Commits on Nov 7, 2013
  1. Fix broken rdbWriteRaw() return value check in rdb.c.

    Thanks to @PhoneLi for reporting.
    committed Nov 7, 2013
Commits on Nov 6, 2013
  1. Merge pull request #1366 from yaauie/deprecate-redis-copy-script-in-2.6

    2.6 branch backport of #1365
    committed Nov 6, 2013
Commits on Oct 28, 2013
Commits on Sep 17, 2013
Commits on Sep 4, 2013
  1. redis-cli: fix big keys search when the key no longer exist.

    The code freed a reply object that was never created, resulting in a
    segfault every time randomkey returned a key that was deleted before we
    queried it for size.
    committed Sep 4, 2013
Commits on Aug 28, 2013
  1. Redis 2.6.16.

    committed Aug 28, 2013
Commits on Aug 27, 2013
  1. fix lua_cmsgpack pack map as array

    yihuang committed with Aug 13, 2013
  2. tryObjectEncoding(): optimize sds strings if possible.

    When no encoding is possible, at least try to reallocate the sds string
    with one that does not waste memory (with free space at the end of the
    buffer) when the string is large enough.
    committed Aug 27, 2013
  3. tryObjectEncoding(): don't call stringl2() for too big strings.

    We are sure that a string that is longer than 21 chars cannot be
    represented by a 64 bit signed integer, as -(2^64) is 21 chars:
    strlen(-18446744073709551616) => 21
    committed Aug 27, 2013
  4. Don't over-allocate the sds string for large bulk requests.

    The call to sdsMakeRoomFor() did not accounted for the amount of data
    already present in the query buffer, resulting into over-allocation.
    committed Aug 27, 2013
  5. DEBUG SDSLEN added.

    This command is only useful for low-level debugging of memory issues due
    to sds wasting memory as empty buffer at the end of the string.
    committed Aug 27, 2013
Commits on Aug 21, 2013
  1. Redis 2.6.15

    committed Aug 21, 2013
Commits on Aug 20, 2013
Commits on Aug 19, 2013
  1. Revert "Fixed type in dict.c comment: 265 -> 256."

    This reverts commit 19de8e4.
    committed Aug 19, 2013
  2. assert.h replaced with redisassert.h when appropriate.

    Also a warning was suppressed by including unistd.h in redisassert.h
    (needed for _exit()).
    committed Aug 19, 2013
  3. Added redisassert.h as drop in replacement for assert.h.

    By using redisassert.h version of assert() you get stack traces in the
    log instead of a process disappearing on assertions.
    committed Aug 19, 2013
  4. dictFingerprint() fingerprinting made more robust.

    The previous hashing used the trivial algorithm of xoring the integers
    together. This is not optimal as it is very likely that different
    hash table setups will hash the same, for instance an hash table at the
    start of the rehashing process, and at the end, will have the same
    Now we hash N integers in a smarter way, by summing every integer to the
    previous hash, and taking the integer hashing again (see the code for
    further details). This way it is a lot less likely that we get a
    collision. Moreover this way of hashing explicitly protects from the
    same set of integers in a different order to hash to the same number.
    This commit is related to issue #1240.
    committed Aug 19, 2013
  5. Fix comments for correctness in zunionInterGenericCommand().

    Related to issue #1240.
    committed Aug 16, 2013
  6. Properly init/release iterators in zunionInterGenericCommand().

    This commit does mainly two things:
    1) It fixes zunionInterGenericCommand() by removing mass-initialization
    of all the iterators used, so that we don't violate the unsafe iterator
    API of dictionaries. This fixes issue #1240.
    2) Since the zui* APIs required the allocator to be initialized in the
    zsetopsrc structure in order to use non-iterator related APIs, this
    commit fixes this strict requirement by accessing objects directly via
    the op->subject->ptr pointer we have to the object.
    committed Aug 16, 2013
  7. dict.c iterator API misuse protection.

    dict.c allows the user to create unsafe iterators, that are iterators
    that will not touch the dictionary data structure in any way, preventing
    copy on write, but at the same time are limited in their usage.
    The limitation is that when itearting with an unsafe iterator, no call
    to other dictionary functions must be done inside the iteration loop,
    otherwise the dictionary may be incrementally rehashed resulting into
    missing elements in the set of the elements returned by the iterator.
    However after introducing this kind of iterators a number of bugs were
    found due to misuses of the API, and we are still finding
    bugs about this issue. The bugs are not trivial to track because the
    effect is just missing elements during the iteartion.
    This commit introduces auto-detection of the API misuse. The idea is
    that an unsafe iterator has a contract: from initialization to the
    release of the iterator the dictionary should not change.
    So we take a fingerprint of the dictionary state, xoring a few important
    dict properties when the unsafe iteartor is initialized. We later check
    when the iterator is released if the fingerprint is still the same. If it
    is not, we found a misuse of the iterator, as not allowed API calls
    changed the internal state of the dictionary.
    This code was checked against a real bug, issue #1240.
    This is what Redis prints (aborting) when a misuse is detected:
    Assertion failed: (iter->fingerprint == dictFingerprint(iter->d)),
    function dictReleaseIterator, file dict.c, line 587.
    committed Aug 16, 2013
Commits on Aug 12, 2013
Commits on Aug 8, 2013
  1. redis-benchmark: changes to random arguments substitution.

    Before this commit redis-benchmark supported random argumetns in the
    form of :rand:000000000000. In every string of that form, the zeros were
    replaced with a random number of 12 digits at every command invocation.
    However this was far from perfect as did not allowed to generate simply
    random numbers as arguments, there was always the :rand: prefix.
    Now instead every argument in the form __rand_int__ is replaced with a
    12 digits number. Note that "__rand_int__" is 12 characters itself.
    In order to implement the new semantic, it was needed to change a few
    thigns in the internals of redis-benchmark, as new clients are created
    cloning old clients, so without a stable prefix such as ":rand:" the old
    way of cloning the client was no longer able to understand, from the old
    command line, what was the position of the random strings to substitute.
    Now instead a client structure is passed as a reference for cloning, so
    that we can directly clone the offsets inside the command line.
    committed Aug 8, 2013
  2. redis-benchmark: replace snprintf()+memcpy with faster code.

    This change was profiler-driven, but the actual effect is hard to
    measure in real-world redis benchmark runs.
    committed Aug 8, 2013
Commits on Aug 7, 2013
  1. Little typo

    badboy committed with Aug 7, 2013