57 lines
No EOL
1.5 KiB
Markdown
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, |