redisをその場限りで使う話


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だよね、みたいな。