Info
Content

Memcached

Про команды в 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
Back to top