1. 15 Apr, 2016 1 commit
  2. 14 Apr, 2016 2 commits
  3. 18 Feb, 2016 1 commit
  4. 01 Oct, 2015 1 commit
  5. 27 Jul, 2015 1 commit
  6. 26 Jul, 2015 5 commits
  7. 03 Jul, 2015 1 commit
  8. 22 Jun, 2015 2 commits
    • antirez's avatar
      Geo: zsetScore refactoring · 9fc47ddf
      antirez authored
      Now used both in geo.c and t_zset to provide ZSCORE.
      9fc47ddf
    • Matt Stancliff's avatar
      [In-Progress] Add Geo Commands · 7f4ac3d1
      Matt Stancliff authored
      Current todo:
        - replace functions in zset.{c,h} with a new unified Redis
          zset access API.
      
      Once we get the zset interface fixed, we can squash
      relevant commits in this branch and have one nice commit
      to merge into unstable.
      
      This commit adds:
        - Geo commands
        - Tests; runnable with: ./runtest --single unit/geo
        - Geo helpers in deps/geohash-int/
        - src/geo.{c,h} and src/geojson.{c,h} implementing geo commands
        - Updated build configurations to get everything working
        - TEMPORARY: src/zset.{c,h} implementing zset score and zset
          range reading without writing to client output buffers.
        - Modified linkage of one t_zset.c function for use in zset.c
      
      Conflicts:
      	src/Makefile
      	src/redis.c
      7f4ac3d1
  9. 02 Jun, 2015 1 commit
  10. 29 May, 2015 3 commits
  11. 28 May, 2015 1 commit
  12. 23 Dec, 2014 1 commit
  13. 07 Aug, 2014 1 commit
  14. 22 Jul, 2014 2 commits
    • antirez's avatar
      d74e422b
    • antirez's avatar
      ZUNIONSTORE reimplemented for speed. · 119813e9
      antirez authored
      The user @kjmph provided excellent ideas to improve speed of ZUNIONSTORE
      (in certain cases by many order of magnitude), together with an
      implementation of the ideas.
      
      While the ideas were sounding, the implementation could be improved both
      in terms of speed and clearness, so that's my attempt at reimplementing
      the speedup proposed, trying to improve by directly using just a
      dictionary with an embedded score inside, and reusing the single-pass
      aggregate + order-later approach.
      
      Note that you can't apply this commit without applying the previous
      commit in this branch that adds a double in the dictEntry value union.
      
      Issue #1786.
      119813e9
  15. 26 Jun, 2014 1 commit
  16. 31 May, 2014 1 commit
  17. 18 Apr, 2014 1 commit
  18. 17 Apr, 2014 3 commits
  19. 16 Apr, 2014 2 commits
    • antirez's avatar
      Pass by pointer and release of lex ranges. · bcab07f7
      antirez authored
      Given that the code was written with a 2 years pause... something
      strange happened in the middle. So there was no function to free a
      lex range min/max objects, and in some places the range was passed by
      value.
      bcab07f7
    • antirez's avatar
      ZLEXCOUNT implemented. · 8b5e0b21
      antirez authored
      Like ZCOUNT for lexicographical ranges.
      8b5e0b21
  20. 05 Apr, 2014 1 commit
  21. 05 Dec, 2013 1 commit
  22. 05 Nov, 2013 1 commit
    • antirez's avatar
      SCAN code refactored to parse cursor first. · ebcb6251
      antirez authored
      The previous implementation of SCAN parsed the cursor in the generic
      function implementing SCAN, SSCAN, HSCAN and ZSCAN.
      
      The actual higher-level command implementation only checked for empty
      keys and return ASAP in that case. The result was that inverting the
      arguments of, for instance, SSCAN for example and write:
      
          SSCAN 0 key
      
      Instead of
      
          SSCAN key 0
      
      Resulted into no error, since 0 is a non-existing key name very likely.
      Just the iterator returned no elements at all.
      
      In order to fix this issue the code was refactored to extract the
      function to parse the cursor and return the error. Every higher level
      command implementation now parses the cursor and later checks if the key
      exist or not.
      ebcb6251
  23. 28 Oct, 2013 2 commits
  24. 19 Aug, 2013 2 commits
    • antirez's avatar
      Fix comments for correctness in zunionInterGenericCommand(). · 3039e806
      antirez authored
      Related to issue #1240.
      3039e806
    • antirez's avatar
      Properly init/release iterators in zunionInterGenericCommand(). · cfb9d025
      antirez authored
      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.
      cfb9d025
  25. 22 Jul, 2013 1 commit
    • antirez's avatar
      Introduction of a new string encoding: EMBSTR · 894eba07
      antirez authored
      Previously two string encodings were used for string objects:
      
      1) REDIS_ENCODING_RAW: a string object with obj->ptr pointing to an sds
      stirng.
      
      2) REDIS_ENCODING_INT: a string object where the obj->ptr void pointer
      is casted to a long.
      
      This commit introduces a experimental new encoding called
      REDIS_ENCODING_EMBSTR that implements an object represented by an sds
      string that is not modifiable but allocated in the same memory chunk as
      the robj structure itself.
      
      The chunk looks like the following:
      
      +--------------+-----------+------------+--------+----+
      | robj data... | robj->ptr | sds header | string | \0 |
      +--------------+-----+-----+------------+--------+----+
                           |                       ^
                           +-----------------------+
      
      The robj->ptr points to the contiguous sds string data, so the object
      can be manipulated with the same functions used to manipulate plan
      string objects, however we need just on malloc and one free in order to
      allocate or release this kind of objects. Moreover it has better cache
      locality.
      
      This new allocation strategy should benefit both the memory usage and
      the performances. A performance gain between 60 and 70% was observed
      during micro-benchmarks, however there is more work to do to evaluate
      the performance impact and the memory usage behavior.
      894eba07
  26. 29 Jan, 2013 1 commit