1. 30 Nov, 2017 6 commits
    • antirez's avatar
      Redis 4.0.3. · cbb6f457
      antirez authored
      cbb6f457
    • antirez's avatar
      LFU: Fix LFUDecrAndReturn() to just decrement. · d766322e
      antirez authored
      Splitting the popularity in half actually just needs decrementing the
      counter because the counter is logarithmic.
      d766322e
    • zhaozhao.zz's avatar
      LFU: add hotkeys option to redis-cli · 6544796a
      zhaozhao.zz authored
      6544796a
    • zhaozhao.zz's avatar
      LFU: do some changes about LFU to find hotkeys · e2355c19
      zhaozhao.zz authored
      Firstly, use access time to replace the decreas time of LFU.
      For function LFUDecrAndReturn,
      it should only try to get decremented counter,
      not update LFU fields, we will update it in an explicit way.
      And we will times halve the counter according to the times of
      elapsed time than server.lfu_decay_time.
      Everytime a key is accessed, we should update the LFU
      including update access time, and increment the counter after
      call function LFUDecrAndReturn.
      If a key is overwritten, the LFU should be also updated.
      Then we can use `OBJECT freq` command to get a key's frequence,
      and LFUDecrAndReturn should be called in `OBJECT freq` command
      in case of the key has not been accessed for a long time,
      because we update the access time only when the key is read or
      overwritten.
      e2355c19
    • zhaozhao.zz's avatar
      LFU: change lfu* parameters to int · 22969a13
      zhaozhao.zz authored
      22969a13
    • zhaozhao.zz's avatar
      6b71f714
  2. 28 Nov, 2017 9 commits
  3. 27 Nov, 2017 3 commits
  4. 24 Nov, 2017 10 commits
  5. 23 Nov, 2017 2 commits
  6. 21 Nov, 2017 1 commit
  7. 08 Nov, 2017 3 commits
    • kmiku7's avatar
      fix boundary case for _dictNextPower · 7675b00a
      kmiku7 authored
      7675b00a
    • Itamar Haber's avatar
      Fixes an off-by-one in argument handling of `MEMORY USAGE` · f31d9b12
      Itamar Haber authored
      Fixes #4430
      f31d9b12
    • antirez's avatar
      SDS: improve sdsRemoveFreeSpace() to avoid useless data copy. · 897d8571
      antirez authored
      Since SDS v2, we no longer have a single header, so the function to
      rewrite the SDS in terms of the minimum space required, instead of just
      using realloc() and let the underlying allocator decide what to do,
      was doing an allocation + copy every time the minimum possible header
      needed to represent the string was different than the current one.
      This could be often a bit wasteful, because if we go, for instance, from
      the 32 bit fields header to the 16 bit fields header, the overhead of
      the header is normally very small. With this commit we call realloc
      instead, unless the change in header size is very significant in relation
      to the string length.
      897d8571
  8. 06 Nov, 2017 1 commit
    • antirez's avatar
      Fix saving of zero-length lists. · 1ee6af4d
      antirez authored
      Normally in modern Redis you can't create zero-len lists, however it's
      possible to load them from old RDB files generated, for instance, using
      Redis 2.8 (see issue #4409). The "Right Thing" would be not loading such
      lists at all, but this requires to hook in rdb.c random places in a not
      great way, for a problem that is at this point, at best, minor.
      
      Here in this commit instead I just fix the fact that zero length lists,
      materialized as quicklists with the first node set to NULL, were
      iterated in the wrong way while they are saved, leading to a crash.
      
      The other parts of the list implementation are apparently able to deal
      with empty lists correctly, even if they are no longer a thing.
      1ee6af4d
  9. 31 Oct, 2017 1 commit
    • antirez's avatar
      Fix buffer overflows occurring reading redis.conf. · 1740300f
      antirez authored
      There was not enough sanity checking in the code loading the slots of
      Redis Cluster from the nodes.conf file, this resulted into the
      attacker's ability to write data at random addresses in the process
      memory, by manipulating the index of the array. The bug seems
      exploitable using the following techique: the config file may be altered so
      that one of the nodes gets, as node ID (which is the first field inside the
      structure) some data that is actually executable: then by writing this
      address in selected places, this node ID part can be executed after a
      jump. So it is mostly just a matter of effort in order to exploit the
      bug. In practice however the issue is not very critical because the
      bug requires an unprivileged user to be able to modify the Redis cluster
      nodes configuration, and at the same time this should result in some
      gain. However Redis normally is unprivileged as well. Yet much better to
      have this fixed indeed.
      
      Fix #4278.
      1740300f
  10. 30 Oct, 2017 1 commit
    • antirez's avatar
      More robust object -> double conversion. · 1847b987
      antirez authored
      Certain checks were useless, at the same time certain malformed inputs
      were accepted without problems (emtpy strings parsed as zero).
      Cases where strtod() returns ERANGE but we still want to parse the input
      where ok in getDoubleFromObject() but not in the long variant.
      
      As a side effect of these fixes, this commit fixes #4391.
      1847b987
  11. 04 Oct, 2017 3 commits