go__cache/docs/README.md

57 lines
No EOL
1.5 KiB
Markdown

# 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
* POSIX-style [options](runner_cli.md), not native in Go
* [Configuration loading](runner_config.md) 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](event_handling.md)
* [Readline equivalence](readline.md) for ASCII presentation interactions
* Storage
* [Hash logic](hash.md) for keys
* Pluggable storage
* Journaling
* Storage engines
* [Memory](storage_memory.md)
* 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,