README.md 1.5 KB

Gache notions

Basic idea

Like Memcached, plus...

  • Usability:
    • True FLUSHALL equivalent to an instance restart
    • Single process for multiple bins
  • Management
    • Complete locking dump/restore (compare cachedump/lru_crawler metadump all`)
    • Snapshots
  • Tag support
  • Pluggable storage
    • Journaling
    • Write-back/write-through replication
    • Chained storage (fast → slow)

Likely to be slower overall, but more convenient.

Components

Server

  • Runner
  • Protocol handling (FSMs)
    • Application: Memcache protocol proper
    • Presentation: ASCII / Binary
    • Transport "connection":
    • TCP with persistent connections
    • TCP without persistent connections
    • UDP
    • raw socketpair (stdin/stdout)
    • Event handling
  • Readline equivalence for ASCII presentation interactions
  • Storage
    • Hash logic for keys
    • Pluggable storage
    • Journaling
    • Storage engines
    • Memory
    • Memcached, for use as a debugging proxy in front of a standard instance
    • Others ?
    • Memory
      • Main memory allocation
      • Slab allocator
    • Reporting
    • Background expiration lurker (cf standard lru_crawler)

Client library

Testing tools

  • memslap, from libmemcached
    • On MBP2016, memcached 1.5.0 makes 25kqps on the set test,