Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: strcompr
Commits on Apr 4, 2014
  1. PFCOUNT: always unshare/decode the object.

    authored
    This will be a non-op most of the times since the object will be
    unshared / decoded, however it is more technically correct to start this
    way since the object may be decoded even in the read-only code path.
  2. Transparent LZF compression initial implementation.

    authored
    This commit shapes the main ideas for the implementation but doesn't
    fix all the command implementations, nor handles loading of LZF
    compressed objects in a way able to perserve the compression.
  3. tryObjectEncoding() refactoring.

    authored
    We also avoid to re-create an object that is already in EMBSTR encoding.
  4. Changed HyperLogLog hash seed to a non-zero value.

    authored
    Using a seed of zero has the side effect of having the empty string
    hashing to what is a very special case in the context of HyperLogLog: a
    very long run of zeroes.
    
    This did not influenced the correctness of the result with 16k registers
    because of the harmonic mean, but still it is inconvenient that a so
    obvious value maps to a so special hash.
    
    The seed 0xadc83b19 is used instead, which is the first 64 bits of the
    SHA1 of the empty string.
    
    Reference: issue #1657.
Commits on Apr 3, 2014
  1. Initial HyperLogLog tests.

    authored
  2. Fix PFADD infinite loop.

    authored
    We need to guarantee that the last bit is 1, otherwise an element may
    hash to just zeroes with probability 1/(2^64) and trigger an infinite
    loop.
    
    See issue #1657.
  3. PFGETREG added for testing purposes.

    authored
    The new command allows to get a dump of the registers stored
    into an HyperLogLog data structure for testing / debugging purposes.
Commits on Apr 2, 2014
  1. hll-gnuplot-graph.rb improved with new filter.

    authored
    The function to generate graphs is also more flexible as now includes
    step and max value. The step of the samples generation function is no
    longer limited to min step of 1000.
  2. HyperLogLog: added magic / version.

    authored
    This will allow future changes like compressed representations.
    Currently the magic is not checked for performance reasons but this may
    change in the future, for example if we add new types encoded in strings
    that may have the same size of HyperLogLogs.
  3. Merge pull request #1646 from raydog/unstable

    authored
    Change HLL* to PF* in a few spots
Commits on Apr 1, 2014
  1. Raymond Myers
  2. Raymond Myers
  3. Include redis.h before other stuff in hyperloglog.c.

    authored
    Otherwise fmacros.h is included later and this may break compilation on
    different systems.
Commits on Mar 31, 2014
  1. HyperLogLog API prefix modified from "P" to "PF".

    authored
    Using both the initials of Philippe Flajolet instead of just "P".
  2. HyperLogLog apply bias correction using a polynomial.

    authored
    Better results can be achieved by compensating for the bias of the raw
    approximation just after 2.5m (when LINEARCOUNTING is no longer used) by
    using a polynomial that approximates the bias at a given cardinality.
    
    The curve used was found using this web page:
    
        http://www.xuru.org/rt/PR.asp
    
    That performs polynomial regression given a set of values.
  3. HLLMERGE implemented.

    authored
    Merge N HLL data structures by selecting the max value for every
    M[i] register among the set of HLLs.
  4. HLLCOUNT is technically a write command

    authored
    When we update the cached value, we need to propagate the command and
    signal the key as modified for WATCH.
  5. HLLADD: propagate write when only variable name is given.

    authored
    The following form is given:
    
        HLLADD myhll
    
    No element is provided in the above case so if 'myhll' var does not
    exist the result is to just create an empty HLL structure, and no update
    will be performed on the registers.
    
    In this case, the DB should still be set dirty and the command
    propagated.
Something went wrong with that request. Please try again.