Memcached
Запущенный memcached
root@vandud:/etc# systemctl status memcached
● memcached.service - memcached daemon
Loaded: loaded (/lib/systemd/system/memcached.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2019-11-12 10:46:25 UTC; 9min ago
Docs: man:memcached(1)
Main PID: 9066 (memcached)
Tasks: 10 (limit: 1073)
CGroup: /system.slice/memcached.service
└─9066 /usr/bin/memcached -m 64 -p 11211 -u memcache -l 127.0.0.1 -P /var/run/memcached/memcached.pid
Nov 12 10:46:25 vandud systemd[1]: Started memcached daemon.
Конфиг memcached'a
root@vandud:/etc# grep -vE '^#|^$' memcached.conf
-d
logfile /var/log/memcached.log
-m 64
-p 11211
-u memcache
-l 127.0.0.1
-P /var/run/memcached/memcached.pid
Как видно, он берет данные из конфига и запускает с ними себя.
Для работы с memcached нужно подключиться к сервису на порт на котором он запущен (например через nc
, можно также через telnet
)
Запись данных
root@vandud:~# echo -e 'add TEST 0 0 3\r\n101\r' | nc localhost 11211
STORED
^C
root@vandud:~# echo -e 'get TEST\r' | nc localhost 11211
VALUE TEST 0 3
101
END
Пример запроса
echo -e 'add KEY 0 0 5\r\nVALUE\r' | nc localhost 11211
В нем указано, что нужно создать ключ KEY который имеет
- флаг 0 (флаги существуют и их можно использовать на свое усмотрение)
- неограниченное время жизни (второй ноль означает пока не уберут этот ключ вручную)
- длину 5 байт
- значение VALUE равное 5 байт
Также нужно обратить внимание, что memcached сначала проверяет корректность данных (например указано что будет 5 байт данных, а передано 6, такой запрос завершится с ошибкой данных), а потом пытается их засунуть в ключ (то есть потом уже он смотрит на существование запрашиваемого ключа (на случай запроса к несуществующему ключу))
Замена значений
root@vandud:~# echo -e 'get KEY\r' | nc localhost 11211
VALUE KEY 0 5
TESTS
END
^C
root@vandud:~# echo -e 'set KEY 0 0 3\r\nkey\r' | nc localhost 11211
STORED
^C
root@vandud:~# echo -e 'get KEY\r' | nc localhost 11211
VALUE KEY 0 3
key
END
Удаление ключа со значением
root@vandud:~# echo -e 'delete KEY\r' | nc localhost 11211
DELETED
^C
root@vandud:~# echo -e 'get KEY\r' | nc localhost 11211
END
^C
Инкремен\Декремент (только если значение ключа числовое, иначе ошибка)
root@vandud:~# echo -e 'set KEY 0 0 3\r\n333\r' | nc localhost 11211
STORED
^C
root@vandud:~# echo -e 'get KEY\r' | nc localhost 11211
VALUE KEY 0 3
333
END
^C
root@vandud:~# echo -e 'incr KEY 333\r' | nc localhost 11211
666
^C
root@vandud:~# echo -e 'get KEY\r' | nc localhost 11211
VALUE KEY 0 3
666
END
^C
root@vandud:~# echo -e 'decr KEY 111\r' | nc localhost 11211
555
^C
root@vandud:~# echo -e 'get KEY\r' | nc localhost 11211
VALUE KEY 0 3
555
END
No Comments