1. 22 Feb, 2021 1 commit
    • Greg Femec's avatar
      Fix random element selection for large hash tables. (#8133) · cde69883
      Greg Femec authored
      
      
      When a database on a 64 bit build grows past 2^31 keys, the underlying hash table expands to 2^32 buckets. After this point, the algorithms for selecting random elements only return elements from half of the available buckets because they use random() which has a range of 0 to 2^31 - 1. This causes problems for eviction policies which use dictGetSomeKeys or dictGetRandomKey. Over time they cause the hash table to become unbalanced because, while new keys are spread out evenly across all buckets, evictions come from only half of the available buckets. Eventually this half of the table starts to run out of keys and it takes longer and longer to find candidates for eviction. This continues until no more evictions can happen.
      
      This solution addresses this by using a 64 bit PRNG instead of libc random().
      Co-authored-by: default avatarGreg Femec <gfemec@google.com>
      (cherry picked from commit 266949c7)
      cde69883
  2. 27 Oct, 2020 3 commits
  3. 10 Sep, 2020 1 commit
  4. 20 Jul, 2020 1 commit
  5. 15 May, 2020 1 commit
  6. 08 May, 2020 1 commit
    • zhenwei pi's avatar
      Support setcpuaffinity on linux/bsd · d6436eb7
      zhenwei pi authored
      Currently, there are several types of threads/child processes of a
      redis server. Sometimes we need deeply optimise the performance of
      redis, so we would like to isolate threads/processes.
      
      There were some discussion about cpu affinity cases in the issue:
      https://github.com/antirez/redis/issues/2863
      
      
      
      So implement cpu affinity setting by redis.conf in this patch, then
      we can config server_cpulist/bio_cpulist/aof_rewrite_cpulist/
      bgsave_cpulist by cpu list.
      
      Examples of cpulist in redis.conf:
      server_cpulist 0-7:2      means cpu affinity 0,2,4,6
      bio_cpulist 1,3           means cpu affinity 1,3
      aof_rewrite_cpulist 8-11  means cpu affinity 8,9,10,11
      bgsave_cpulist 1,10-11    means cpu affinity 1,10,11
      
      Test on linux/freebsd, both work fine.
      Signed-off-by: default avatarzhenwei pi <pizhenwei@bytedance.com>
      d6436eb7
  7. 28 Apr, 2020 1 commit
  8. 31 Mar, 2020 1 commit
  9. 25 Mar, 2020 1 commit
  10. 10 Jan, 2020 1 commit
  11. 29 Nov, 2019 1 commit
  12. 19 Nov, 2019 1 commit
    • Johannes Truschnigg's avatar
      Auto-detect and link libsystemd at compile-time · 129d14e1
      Johannes Truschnigg authored
      This adds Makefile/build-system support for USE_SYSTEMD=(yes|no|*). This
      variable's value determines whether or not libsystemd will be linked at
      build-time.
      
      If USE_SYSTEMD is set to "yes", make will use PKG_CONFIG to check for
      libsystemd's presence, and fail the build early if it isn't
      installed/detected properly.
      
      If USE_SYSTEM is set to "no", libsystemd will *not* be linked, even if
      support for it is available on the system redis is being built on.
      
      For any other value that USE_SYSTEM might assume (e.g. "auto"),
      PKG_CONFIG will try to determine libsystemd's presence, and set up the
      build process to link against it, if it was indicated as being
      installed/available.
      
      This approach has a number of repercussions of its own, most importantly
      the following: If you build redis on a system that actually has systemd
      support, but no libsystemd-dev package(s) installed, you'll end up
      *without* support for systemd notification/status reporting support in
      redis-server. This changes established runtime behaviour.
      
      I'm not sure if the build system and/or the server binary should
      indicate this. I'm also wondering if not actually having
      systemd-notify-support, but requesting it via the server's config,
      should result in a fatal error now.
      129d14e1
  13. 16 Oct, 2019 1 commit
  14. 07 Oct, 2019 2 commits
    • Yossi Gottlieb's avatar
      TLS: Configuration options. · 61733ded
      Yossi Gottlieb authored
      Add configuration options for TLS protocol versions, ciphers/cipher
      suites selection, etc.
      61733ded
    • Yossi Gottlieb's avatar
      TLS: Connections refactoring and TLS support. · b087dd1d
      Yossi Gottlieb authored
      * Introduce a connection abstraction layer for all socket operations and
      integrate it across the code base.
      * Provide an optional TLS connections implementation based on OpenSSL.
      * Pull a newer version of hiredis with TLS support.
      * Tests, redis-cli updates for TLS support.
      b087dd1d
  15. 04 Oct, 2019 1 commit
  16. 12 Sep, 2019 1 commit
  17. 07 Jul, 2019 1 commit
  18. 29 Jun, 2019 1 commit
  19. 07 May, 2019 1 commit
  20. 06 May, 2019 1 commit
  21. 07 Mar, 2019 1 commit
    • Brad Solomon's avatar
      Provide an uninstall target in Makefile · d5b24d31
      Brad Solomon authored
      On `make uninstall`, removes:
      
      - /usr/local/bin/redis-benchmark
      - /usr/local/bin/redis-check-aof
      - /usr/local/bin/redis-check-rdb
      - /usr/local/bin/redis-cli
      - /usr/local/bin/redis-sentinel
      - /usr/local/bin/redis-server
      
      (Only the src/ versions are removed in `make clean`)
      d5b24d31
  22. 01 Mar, 2019 1 commit
  23. 21 Feb, 2019 1 commit
  24. 09 Jan, 2019 1 commit
  25. 25 Nov, 2018 2 commits
  26. 11 Nov, 2018 1 commit
  27. 08 Nov, 2018 1 commit
  28. 31 Oct, 2018 1 commit
  29. 30 Oct, 2018 3 commits
  30. 19 Oct, 2018 1 commit
  31. 14 Sep, 2018 1 commit
  32. 12 Sep, 2018 1 commit
  33. 04 Jul, 2018 1 commit
  34. 25 May, 2018 1 commit