Frederic G. MARAND ea1ca35b3c Added runner components. Restructured to file-per-component. Removed components.md. 7 éve
..
README.md ea1ca35b3c Added runner components. Restructured to file-per-component. Removed components.md. 7 éve
event_handling.md ea1ca35b3c Added runner components. Restructured to file-per-component. Removed components.md. 7 éve
readline.md ea1ca35b3c Added runner components. Restructured to file-per-component. Removed components.md. 7 éve
storage_memory.md ea1ca35b3c Added runner components. Restructured to file-per-component. Removed components.md. 7 éve

README.md

Gache notions

Basic idea

Like Memcached, plus...

  • Usability:
    • True FLUSHALL
    • Single process for multiple bins
  • Management
    • Complete locking dump/restore
    • Snapshots
  • Tag support
  • Pluggable storage
    • Journaling
    • Write-back/write-through replication
    • Chained storage (fast → slow)

But probably slower overall, but more convenient.

Components

Server

  • Runner
    • POSIX-style options, not native in Go
    • Configuration loading for systemd (and others) integration
  • 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
    • 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

Client library