• Chen Tianjie's avatar
    Add CLIENT NO-TOUCH for clients to run commands without affecting LRU/LFU of keys (#11483) · 897c3d52
    Chen Tianjie authored
    
    
    When no-touch mode is enabled, the client will not touch LRU/LFU of the
    keys it accesses, except when executing command `TOUCH`.
    This allows inspecting or modifying the key-space without affecting their eviction.
    
    Changes:
    - A command `CLIENT NO-TOUCH ON|OFF` to switch on and off this mode.
    - A client flag `#define CLIENT_NOTOUCH (1ULL<<45)`, which can be shown
      with `CLIENT INFO`, by the letter "T" in the "flags" field.
    - Clear `NO-TOUCH` flag in `clearClientConnectionState`, which is used by `RESET`
      command and resetting temp clients used by modules.
    - Also clear `NO-EVICT` flag in `clearClientConnectionState`, this might have been an
      oversight, spotted by @madolson.
    - A test using `DEBUG OBJECT` command to verify that LRU stat is not touched when
      no-touch mode is on.
    Co-authored-by: default avatarchentianjie <chentianjie@alibaba-inc.com>
    Co-authored-by: default avatarMadelyn Olson <34459052+madolson@users.noreply.github.com>
    Co-authored-by: default avatarsundb <sundbcn@gmail.com>
    897c3d52
db.c 89 KB