1. 10 Jul, 2017 1 commit
  2. 05 Jul, 2017 1 commit
  3. 26 Jun, 2017 1 commit
  4. 10 May, 2017 1 commit
    • antirez's avatar
      Modules TSC: use atomic var for server.unixtime. · 1f598fc2
      antirez authored
      This avoids Helgrind complaining, but we are actually not using
      atomicGet() to get the unixtime value for now: too many places where it
      is used and given tha time_t is word-sized it should be safe in all the
      archs we support as it is.
      
      On the other hand, Helgrind, when Redis is compiled with "make helgrind"
      in order to force the __sync macros, will detect the write in
      updateCachedTime() as a read (because atomic functions are used) and
      will not complain about races.
      
      This commit also includes minor refactoring of mutex initializations and
      a "helgrind" target in the Makefile.
      1f598fc2
  5. 17 Apr, 2017 1 commit
  6. 27 Mar, 2017 1 commit
  7. 23 Feb, 2017 1 commit
  8. 20 Feb, 2017 2 commits
    • antirez's avatar
      84fa8230
    • antirez's avatar
      Use SipHash hash function to mitigate HashDos attempts. · adeed29a
      antirez authored
      This change attempts to switch to an hash function which mitigates
      the effects of the HashDoS attack (denial of service attack trying
      to force data structures to worst case behavior) while at the same time
      providing Redis with an hash function that does not expect the input
      data to be word aligned, a condition no longer true now that sds.c
      strings have a varialbe length header.
      
      Note that it is possible sometimes that even using an hash function
      for which collisions cannot be generated without knowing the seed,
      special implementation details or the exposure of the seed in an
      indirect way (for example the ability to add elements to a Set and
      check the return in which Redis returns them with SMEMBERS) may
      make the attacker's life simpler in the process of trying to guess
      the correct seed, however the next step would be to switch to a
      log(N) data structure when too many items in a single bucket are
      detected: this seems like an overkill in the case of Redis.
      
      SPEED REGRESION TESTS:
      
      In order to verify that switching from MurmurHash to SipHash had
      no impact on speed, a set of benchmarks involving fast insertion
      of 5 million of keys were performed.
      
      The result shows Redis with SipHash in high pipelining conditions
      to be about 4% slower compared to using the previous hash function.
      However this could partially be related to the fact that the current
      implementation does not attempt to hash whole words at a time but
      reads single bytes, in order to have an output which is endian-netural
      and at the same time working on systems where unaligned memory accesses
      are a problem.
      
      Further X86 specific optimizations should be tested, the function
      may easily get at the same level of MurMurHash2 if a few optimizations
      are performed.
      adeed29a
  9. 19 Feb, 2017 2 commits
  10. 30 Dec, 2016 1 commit
  11. 19 Sep, 2016 1 commit
  12. 07 Sep, 2016 1 commit
  13. 06 Jul, 2016 4 commits
  14. 14 Jun, 2016 1 commit
  15. 18 May, 2016 1 commit
    • antirez's avatar
      Fix modules compilation when libc malloc is used. · b09a6b6a
      antirez authored
      Compiling Redis worked as a side effect of jemalloc target specifying
      -ldl as needed linker options, otherwise it is not provided during
      linking and dlopen() API will remain unresolved symbols.
      b09a6b6a
  16. 10 May, 2016 1 commit
  17. 01 Oct, 2015 1 commit
  18. 26 Jul, 2015 1 commit
  19. 14 Jul, 2015 2 commits
  20. 23 Jun, 2015 1 commit
    • antirez's avatar
      Geo: big refactoring of geo.c, zset.[ch] removed. · 0b931390
      antirez authored
      This commit simplifies the implementation in a few ways:
      
      1. zsetScore implementation improved a bit and moved into t_zset.c where
         is now also used to implement the ZSCORE command.
      
      2. Range extraction from the sorted set remains a separated
         implementation from the one in t_zset.c, but was hyper-specialized in
         order to avoid accumulating results into a list and remove the ones
         outside the radius.
      
      3. A new type is introduced: geoArray, which can accumulate geoPoint
         structures in a vector with power of two expansion policy. This is
         useful since we have to call qsort() against it before returning the
         result to the user.
      
      4. As a result of 1, 2, 3, the two files zset.c and zset.h are now
         removed, including the function to merge two lists (now handled with
         functions that can add elements to existing geoArray arrays) and
         the machinery used in order to pass zset results.
      
      5. geoPoint structure simplified because of the general code structure
         simplification, so we no longer need to take references to objects.
      
      6. Not counting the JSON removal the refactoring removes 200 lines of
         code for the same functionalities, with a simpler to read
         implementation.
      
      7. GEORADIUS is now 2.5 times faster testing with 10k elements and a
         radius resulting in 124 elements returned. However this is mostly a
         side effect of the refactoring and simplification. More speed gains
         can be achieved by trying to optimize the code.
      0b931390
  21. 22 Jun, 2015 3 commits
    • antirez's avatar
      Geo: compile again with optimizations · 3d9031ed
      antirez authored
      For some reason the Geo PR included disabling the fact that Redis is
      compiled with optimizations. Apparently it was just @mattsta attempt to
      speedup the modify-compile-test iteration and there are no other
      reasons.
      3d9031ed
    • antirez's avatar
      Geo: JSON features removed · b18c68aa
      antirez authored
      The command can only return data in the normal Redis protocol. It is up
      to the caller to translate to JSON if needed.
      b18c68aa
    • 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
  22. 28 Jan, 2015 1 commit
    • Matt Stancliff's avatar
      Convert check-dump to Redis check-rdb mode · 145473ac
      Matt Stancliff authored
      redis-check-dump is now named redis-check-rdb and it runs
      as a mode of redis-server instead of an independent binary.
      
      You can now use 'redis-server redis.conf --check-rdb' to check
      the RDB defined in redis.conf.  Using argument --check-rdb
      checks the RDB and exits.  We could potentially also allow
      the server to continue starting if the RDB check succeeds.
      
      This change also enables us to use RDB checking programatically
      from inside Redis for certain failure conditions.
      145473ac
  23. 09 Jan, 2015 1 commit
    • antirez's avatar
      Add "-lrt" in Makefile for Solaris. · 0d22121c
      antirez authored
      This fix is from @NanXiao, however I was not able to retain authorship
      because the Pull Request original repository was removed.
      0d22121c
  24. 02 Jan, 2015 2 commits
  25. 23 Dec, 2014 1 commit
  26. 17 Dec, 2014 1 commit
  27. 12 Dec, 2014 1 commit
  28. 10 Dec, 2014 1 commit
  29. 13 Aug, 2014 1 commit
  30. 12 Aug, 2014 1 commit
    • NanXiao's avatar
      Use resolv library in Solaris · 951eefae
      NanXiao authored
      For some Solaris flavours, the inet_aton in in resolv library.
      Not linking this library will introduce link error.
      
      Improves compatability with older Solaris and still
      works on new Solaris.
      
      Closes #1092
      951eefae
  31. 08 Aug, 2014 1 commit