# Memcache Commands {{#include ../../banners/hacktricks-training.md}} ## Commands Cheat-Sheet **From** [**https://lzone.de/cheat-sheet/memcached**](https://lzone.de/cheat-sheet/memcached) Obsługiwane komendy (oficjalne i niektóre nieoficjalne) są udokumentowane w dokumencie [doc/protocol.txt](https://github.com/memcached/memcached/blob/master/doc/protocol.txt). Niestety opis składni nie jest zbyt jasny, a prosta komenda pomocy wylistowująca istniejące komendy byłaby znacznie lepsza. Oto przegląd komend, które można znaleźć w [source](https://github.com/memcached/memcached) (stan na 19.08.2016): | Command | Description | Example | | -------------------- | --------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------- | | get | Odczytuje wartość | `get mykey` | | set | Ustawia klucz bezwarunkowo |

set mykey

Upewnij się, że używasz \r\n jako znaków nowej linii podczas korzystania z narzędzi CLI Unix. Na przykład

printf "set mykey 0 60 4\r\ndata\r\n" | nc localhost 11211

| | add | Dodaje nowy klucz | `add newkey 0 60 5` | | replace | Nadpisuje istniejący klucz | `replace key 0 60 5` | | append | Dodaje dane do istniejącego klucza | `append key 0 60 15` | | prepend | Dodaje dane przed istniejącym kluczem | `prepend key 0 60 15` | | incr | Zwiększa wartość klucza numerycznego o podaną liczbę | `incr mykey 2` | | decr | Zmniejsza wartość klucza numerycznego o podaną liczbę | `decr mykey 5` | | delete | Usuwa istniejący klucz | `delete mykey` | | flush_all | Natychmiast unieważnia wszystkie elementy | `flush_all` | | flush_all | Unieważnia wszystkie elementy w n sekundach | `flush_all 900` | | stats | Wyświetla ogólne statystyki | `stats` | | | Wyświetla statystyki pamięci | `stats slabs` | | | Wyświetla statystyki alokacji na wyższym poziomie | `stats malloc` | | | Wyświetla informacje o elementach | `stats items` | | | | `stats detail` | | | | `stats sizes` | | | Resetuje liczniki statystyk | `stats reset` | | lru_crawler metadump | Zrzuca (większość) metadanych dla (wszystkich) elementów w pamięci podręcznej | `lru_crawler metadump all` | | version | Wyświetla wersję serwera. | `version` | | verbosity | Zwiększa poziom logowania | `verbosity` | | quit | Kończy sesję | `quit` | #### Traffic Statistics Możesz zapytać o aktualne statystyki ruchu, używając komendy ``` stats ``` Otrzymasz listę, która pokazuje liczbę połączeń, bajtów w/na zewnątrz i wiele więcej. Przykładowy wynik: ``` STAT pid 14868 STAT uptime 175931 STAT time 1220540125 STAT version 1.2.2 STAT pointer_size 32 STAT rusage_user 620.299700 STAT rusage_system 1545.703017 STAT curr_items 228 STAT total_items 779 STAT bytes 15525 STAT curr_connections 92 STAT total_connections 1740 STAT connection_structures 165 STAT cmd_get 7411 STAT cmd_set 28445156 STAT get_hits 5183 STAT get_misses 2228 STAT evictions 0 STAT bytes_read 2112768087 STAT bytes_written 1000038245 STAT limit_maxbytes 52428800 STAT threads 1 END ``` #### Statystyki pamięci Możesz zapytać o bieżące statystyki pamięci, używając ``` stats slabs ``` I'm ready to assist you with the translation. Please provide the text you would like me to translate. ``` STAT 1:chunk_size 80 STAT 1:chunks_per_page 13107 STAT 1:total_pages 1 STAT 1:total_chunks 13107 STAT 1:used_chunks 13106 STAT 1:free_chunks 1 STAT 1:free_chunks_end 12886 STAT 2:chunk_size 100 STAT 2:chunks_per_page 10485 STAT 2:total_pages 1 STAT 2:total_chunks 10485 STAT 2:used_chunks 10484 STAT 2:free_chunks 1 STAT 2:free_chunks_end 10477 [...] STAT active_slabs 3 STAT total_malloced 3145436 END ``` Jeśli nie jesteś pewien, czy masz wystarczająco pamięci dla swojej instancji memcached, zawsze zwracaj uwagę na liczniki „evictions” podawane przez polecenie „stats”. Jeśli masz wystarczająco pamięci dla instancji, licznik „evictions” powinien wynosić 0 lub przynajmniej nie powinien rosnąć. #### Jakie klucze są używane? Nie ma wbudowanej funkcji, aby bezpośrednio określić bieżący zestaw kluczy. Możesz jednak użyć ``` stats items ``` komenda do określenia, ile kluczy istnieje. ``` stats items STAT items:1:number 220 STAT items:1:age 83095 STAT items:2:number 7 STAT items:2:age 1405 [...] END ``` To przynajmniej pomaga zobaczyć, czy jakiekolwiek klucze są używane. Aby wyeksportować nazwy kluczy z skryptu PHP, który już uzyskuje dostęp do memcache, możesz użyć kodu PHP z [100days.de](http://100days.de/serendipity/archives/55-Dumping-MemcacheD-Content-Keys-with-PHP.html). {{#include ../../banners/hacktricks-training.md}}