Skip to content

makenowjust/bashcached

Repository files navigation

bashcached

memcached server built on bash + socat

GitHub Actions Workflow Status

Feature

It is one file script (small, (($(< bashcached wc -l) < 100))!), and it requires only:

  • bash
  • socat

So, you can use it as soon as you download it.

It supports multiple connections and implements almost all memcached commands:

  • set, add, replace, append and prepend
  • get, delete and touch
  • incr and decr
  • gets and cas
  • flush_all
  • version and quit

And, it supports to serve over tcp and unix domain socket.

Install

You could install base64, bash and socat via brew if you use macOS:

$ brew install base64 bash socat

(In fact, bash is installed in the default on macOS, however it is too old to run bashcached.)

Or, you could install socat via apt if you use Ubuntu:

$ sudo apt install socat

then, download and chmod.

$ curl -LO https://git.io/bashcached
$ chmod +x bashcached

Or, you could use bpkg instaed of downloading script:

$ bpkg install makenowjust/bashcached -g

Usage

$ ./bashcached --help
bashcached - memcached built on bash + socat
(C) TSUYUSATO "MakeNowJust" Kitsune 2016-2024 <[email protected]>

USAGE: bashcached [--help] [--version] [--license] [--protocol=tcp|unix] [--port=PORT] [--check=CHECK]

OPTIONS:
  --protocol=tcp|unix      protocol name to bind and listen (default: tcp)
  --port=PORT              port (or filename) to bind and listen (default: 25252)
  --check=CHECK            interval to check each cache's expire (default: 60)
  --help                   show this help
  --version                show bashcached's version
  --license                show bashcached's license
$ ./bashcached &
$ telnet localhost 25252
version
VERSION 5.2.0-bashcached
set hello 0 0 11
hello world
STORED
get hello
VALUE hello 0 11
hello world
END
quit

License and Copyright

MIT and 🍣 © TSUYUSATO "MakeNowJust" Kitsune <[email protected]> 2016-2024