redis
の zset がどうしても使いたいけど、そのためだけに常駐させるのは嫌だし、永続化する必要も無いし、
leveldb
とか sqlite
とかも代替にならなそうなので、
その場限りで redis-server
立ち上げてソケットで繋ぐことにした話。
# !/bin/bash
set -ue
# バックグラウンドでredis起動
cat <<EOD | redis-server -
daemonize yes
pidfile redis.pid
port 0
bind 127.0.0.1
logfile redis.log
loglevel verbose
unixsocket redis.sock
unixsocketperm 700
timeout 0
databases 16
EOD
# 後始末
trap 'kill $(cat redis.pid)' EXIT
# 立ち上がりを待機
while test ! -S redis.sock; do sleep 1; done
# socket 経由で繋いでみる
redis-cli -s redis.sock <<EOD
set hoge 123
get hoge
EOD
やっぱredisだよね、みたいな。