In diesem Artikel werden hauptsächlich die allgemeinen Befehle von Memcached vorgestellt. Der Herausgeber findet ihn recht gut, daher werde ich ihn jetzt mit Ihnen teilen und als Referenz verwenden. Folgen wir dem Editor, um einen Blick darauf zu werfen
1. Allgemeine Parameter zum Starten von Memcache
-p <num> 设置TCP端口号(默认设置为: 11211) -U <num> UDP监听端口(默认: 11211, 0 时关闭) -l <ip_addr> 绑定地址(默认:所有都允许,无论内外网或者本机更换IP,有安全隐患,若设置为127.0.0.1就只能本机访问) -c <num> max simultaneous connections (default: 1024) -d 以daemon方式运行 -u <username> 绑定使用指定用于运行进程<username> -m <num> 允许最大内存用量,单位M (默认: 64 MB) -P <file> 将PID写入文件<file>,这样可以使得后边进行快速进程终止, 需要与-d 一起使用
Weitere können mit verwendet werden memcached -h
Unter Linux: ./usr/local/bin/memcached -d -u root -l 192.168.1.197 -m 2048 -p 12121
in Unter Fenster: d:App_Servmemcachedmemcached.exe -d RunService -l 127.0.0.1 -p 11211 -m 500
Nach der Registrierung als Dienst unter Windows ausführen:
sc.exe create Memcached_srv binpath= “d:\App_Serv\memcached\memcached.exe -d RunService -p 11211 -m 500″start= auto net start Memcached
2. Verbinden und beenden
telnet 127.0.0.1 11211 quit
3
Fünf grundlegende Memcached-Befehle führen die einfachsten Vorgänge aus. Zu diesen Befehlen und Operationen gehören:
Setzen
Hinzufügen
Ersetzen
get
delete
Die ersten drei Befehle werden zum Betreiben von Schlüssel-Wert-Paaren verwendet, die in der Memcached-Standardmodifikation gespeichert sind Befehle. Sie sind sehr einfach und benutzerfreundlich und verwenden alle die unten gezeigte Syntax:
command <key> <flags> <expiration time> <bytes> <value>
Die Parameterbeschreibung lautet wie folgt:
Befehlssatz/Hinzufügen/Ersetzen
Schlüssel wird zum Nachschlagen des zwischengespeicherten Werts verwendet
Flags Kann einen ganzzahligen Parameter des Schlüssel-Wert-Paares enthalten, der vom Client zum Speichern zusätzlicher Informationen über den Schlüssel verwendet wird. Wertepaar
Ablaufzeit Speichern Sie den Schlüsselwert im Cache. Zeitdauer (in Sekunden, 0 bedeutet für immer)
Bytes Die Anzahl der im Cache gespeicherten Bytes
Wert Der gespeicherte Wert (immer in der zweiten Zeile). )
Sehen wir uns nun diese Befehle in Aktion an.
3.1 set
set-Befehl wird verwendet, um neue Schlüssel-Wert-Paare zum Cache hinzuzufügen. Wenn der Schlüssel bereits vorhanden ist, wird der vorherige Wert ersetzt.
Beachten Sie die folgende Interaktion, die den Set-Befehl verwendet:
set userId 0 0 5 12345 STORED
Wenn der Schlüssel mit dem Set richtig eingestellt ist Befehl Ja, der Server antwortet mit dem Wort STORED. In diesem Beispiel wird dem Cache ein Schlüssel-Wert-Paar hinzugefügt, dessen Schlüssel userId ist und dessen Wert 12345 ist. Wenn Sie die Ablaufzeit auf 0 setzen, wird memcached darüber informiert, dass dieser Wert im Cache gespeichert werden soll, bis Sie ihn löschen.
3.2 add
Der Befehl „add“ fügt dem Cache nur dann ein Schlüssel-Wert-Paar hinzu, wenn der Schlüssel nicht im Cache vorhanden ist. Wenn der Schlüssel bereits im Cache vorhanden ist, ist der vorherige Wert immer noch derselbe und Sie erhalten die Antwort NOT_STORED.
Das Folgende ist die Standardinteraktion mit dem Add-Befehl:
set userId 0 0 5 12345 STORED add userId 0 0 5 55555 NOT_STORED add companyId 0 0 3 564 STORED
3.3 ersetzen
Der Ersetzungsbefehl ersetzt einen Schlüssel im Cache nur, wenn der Schlüssel bereits vorhanden ist. Wenn der Schlüssel nicht im Cache vorhanden ist, erhalten Sie eine NOT_STORED-Antwort vom zwischengespeicherten Server.
Das Folgende ist die Standardinteraktion mit dem Ersetzungsbefehl:
replace accountId 0 0 5 67890 NOT_STORED set accountId 0 0 5 67890 STORED replace accountId 0 0 5 55555 STORED
Die letzten beiden Grundbefehle sind get und delete. Diese Befehle sind ziemlich einfach zu verstehen und verwenden eine ähnliche Syntax, wie unten gezeigt:
command <key>
Schauen wir uns die Anwendung dieser Befehle an.
3.4 get
Der get-Befehl wird verwendet, um den Wert abzurufen, der sich auf das zuvor hinzugefügte Schlüssel-Wert-Paar bezieht. Sie werden get verwenden, um die meisten Abrufvorgänge auszuführen.
Hier ist eine typische Interaktion mit dem get-Befehl:
set userId 0 0 5 12345 STORED get userId VALUE userId 0 5 12345 END get bob END
Wie Sie sehen können, ist der get-Befehl recht einfach. Sie rufen get mit einem Schlüssel auf und wenn der Schlüssel im Cache vorhanden ist, wird der entsprechende Wert zurückgegeben. Wenn es nicht existiert, wird nichts zurückgegeben.
3.5 löschen
Der letzte Grundbefehl ist löschen. Der Löschbefehl löscht alle vorhandenen Werte im Memcached. Sie würden delete mit einem Schlüssel aufrufen und den Wert löschen, wenn der Schlüssel im Cache vorhanden ist. Wenn es nicht vorhanden ist, wird eine NOT_FOUND-Meldung zurückgegeben.
Hier ist die Client-Server-Interaktion mit dem Löschbefehl:
set userId 0 0 5 98765 STORED delete bob NOT_FOUND delete userId DELETED get userId END
Zwei übergeordnete Befehle, die in Memcached verwendet werden können, sind „gets“. und cas. Die Befehle get und cas müssen zusammen verwendet werden. Mit diesen beiden Befehlen stellen Sie sicher, dass ein vorhandenes Name/Wert-Paar nicht auf einen neuen Wert gesetzt wird, wenn der Wert bereits aktualisiert wurde. Schauen wir uns diese Befehle einzeln an.
3.6 gets
Der Befehl „gets“ funktioniert ähnlich wie der grundlegende Befehl „get“. Der Unterschied zwischen den beiden Befehlen besteht darin, dass „gets“ etwas mehr Informationen zurückgibt: einen 64-Bit-Ganzzahlwert, der einer „Versions“-ID für ein Name/Wert-Paar sehr ähnlich ist.
Hier ist die Client-Server-Interaktion mit dem Befehl „gets“:
set userId 0 0 5 12345 STORED get userId VALUE userId 0 5 12345 END gets userId VALUE userId 0 5 4 12345 END
Beachten Sie den Unterschied zwischen den Befehlen „get“ und „gets“. Der Befehl gets gibt einen zusätzlichen Wert zurück – in diesem Fall den ganzzahligen Wert 4 – der das Name/Wert-Paar identifiziert. Wenn ein weiterer Set-Befehl für dieses Name/Wert-Paar ausgeführt wird, ändert sich der von gets zurückgegebene zusätzliche Wert, um anzuzeigen, dass das Name/Wert-Paar aktualisiert wurde. Ein Beispiel wird angezeigt:
set userId 0 0 5 33333 STORED gets userId VALUE userId 0 5 5 33333 END
您看到 gets 返回的值了吗?它已经更新为 5。您每次修改名称/值对时,该值都会发生更改。
3.7 cas
cas(check 和 set)是一个非常便捷的 memcached 命令,用于设置名称/值对的值(如果该名称/值对在您上次执行 gets 后没有更新过)。它使用与 set 命令相类似的语法,但包括一个额外的值:gets 返回的额外值。
注意以下使用 cas 命令的交互:
set userId 0 0 5 55555 STORED gets userId VALUE userId 0 5 6 55555 END cas userId 0 0 5 6 33333 STORED
如您所见,我使用额外的整型值 6 来调用 gets 命令,并且操作运行非常顺序。现在,我们来看看中的一系列命令:
使用旧版本指示符的 cas 命令
set userId 0 0 5 55555 STORED gets userId VALUE userId 0 5 8 55555 END cas userId 0 0 5 6 33333 EXISTS
注意,我并未使用 gets 最近返回的整型值,并且 cas 命令返回 EXISTS 值以示失败。从本质上说,同时使用gets 和cas 命令可以防止您使用自上次读取后经过更新的名称/值对。
缓存管理命令
最后两个 memcached 命令用于监控和清理 memcached 实例。它们是 stats 和 flush_all 命令。
3.8 stats
stats 命令的功能正如其名:转储所连接的 memcached 实例的当前统计数据。在下例中,执行 stats 命令显示了关于当前 memcached 实例的信息:
STAT pid 22459 进程ID STAT uptime 1027046 服务器运行秒数 STAT time 1273043062 服务器当前unix时间戳 STAT version 1.4.4 服务器版本 STAT libevent 2.0.21-stable STAT pointer_size 64 操作系统字大小(这台服务器是64位的) STAT rusage_user 0.040000 进程累计用户时间 STAT rusage_system 0.260000 进程累计系统时间 STAT curr_connections 10 当前打开连接数 STAT total_connections 82 曾打开的连接总数 STAT connection_structures 13 服务器分配的连接结构数 STAT reserved_fds 20 STAT cmd_get 54 执行get命令总数 STAT cmd_set 34 执行set命令总数 STAT cmd_flush 3 指向flush_all命令总数 STAT get_hits 9 get命中次数 STAT get_misses 45 get未命中次数 STAT delete_misses 5 delete未命中次数 STAT delete_hits 1 delete命中次数 STAT incr_misses 0 incr未命中次数 STAT incr_hits 0 incr命中次数 STAT decr_misses 0 decr未命中次数 STAT decr_hits 0 decr命中次数 STAT cas_misses 0 cas未命中次数 STAT cas_hits 0 cas命中次数 STAT cas_badval 0 使用擦拭次数 STAT touch_hits 0 STAT touch_misses 0 STAT auth_cmds 0 STAT auth_errors 0 STAT bytes_read 15785 读取字节总数 STAT bytes_written 15222 写入字节总数 STAT limit_maxbytes 67108864 分配的内存数(字节) STAT accepting_conns 1 目前接受的链接数 STAT listen_disabled_num 0 STAT time_in_listen_disabled_us 0 STAT threads 4 线程数 STAT conn_yields 0 STAT hash_power_level 16 STAT hash_bytes 524288 STAT hash_is_expanding 0 STAT malloc_fails 0 STAT conn_yields 0 STAT bytes 0 存储item字节数 STAT curr_items 0 item个数 STAT total_items 34 item总数 STAT expired_unfetched 0 STAT evicted_unfetched 0 STAT evictions 0 为获取空间删除item的总数 STAT reclaimed 0 STAT crawler_reclaimed 0 STAT crawler_items_checked 0 STAT lrutail_reflocked 0
此处的大多数输出都非常容易理解。我们先来看看输出,然后再使用新的键来运行一些 set 命令,并再次运行stats 命令,注意发生了哪些变化。
stats items
执行stats items,可以看到STAT items行,如果memcached存储内容很多,那么这里也会列出很多的STAT items行。
STAT items:1:number 3 STAT items:1:age 1698 STAT items:1:evicted 0 STAT items:1:evicted_nonzero 0 STAT items:1:evicted_time 0 STAT items:1:outofmemory 0 STAT items:1:tailrepairs 0 STAT items:1:reclaimed 0 STAT items:1:expired_unfetched 0 STAT items:1:evicted_unfetched 0 STAT items:1:crawler_reclaimed 0 STAT items:1:crawler_items_checked 0 STAT items:1:lrutail_reflocked 0 END
stats cachedump slabs_id limit_num
slabs_id:由stats items返回的结果(STAT items后面的数字)决定的
limit_num:返回的记录数,0表示返回所有记录
通过stats items、stats cachedump slab_id limit_num配合get命令可以遍历memcached的记录。
stats cachedump 1 0 ITEM userId [5 b; 1467903379 s] ITEM accountId [5 b; 1467903379 s] ITEM companyId [3 b; 1467903379 s] END stats cachedump 1 2 ITEM userId [5 b; 1467903379 s] ITEM accountId [5 b; 1467903379 s] END
stats slabs 显示各个slab的信息,包括chunk的大小、数目、使用情况等
STAT 1:chunk_size 96 STAT 1:chunks_per_page 10922 STAT 1:total_pages 1 STAT 1:total_chunks 10922 STAT 1:used_chunks 3 STAT 1:free_chunks 10919 STAT 1:free_chunks_end 0 STAT 1:mem_requested 232 STAT 1:get_hits 9 STAT 1:cmd_set 14 STAT 1:delete_hits 1 STAT 1:incr_hits 0 STAT 1:decr_hits 0 STAT 1:cas_hits 0 STAT 1:cas_badval 0 STAT 1:touch_hits 0 STAT active_slabs 1 STAT total_malloced 1048512
stats sizes 输出所有item的大小和个数
STAT 96 3
stats reset 清空统计数据
stats reset
RESET
3.9 flush_all
flush_all 是最后一个要介绍的命令。这个最简单的命令仅用于清理缓存中的所有名称/值对。如果您需要将缓存重置到干净的状态,则 flush_all 能提供很大的用处。下面是一个使用 flush_all 的例子:
set userId 0 0 5 55555 STORED get userId VALUE userId 0 5 55555 END flush_all OK get userId END
追加与清除命令
3.10 append
append 将数据追加到当前缓存数据的之后,当缓存数据存在时才存储。
set username 0 0 8 wayne173 STORED get username VALUE username 0 8 wayne173 END append username 0 0 5 _ages STORED get username VALUE username 0 13 wayne173_ages END
3.11 prepend
prepend 将数据追加到当前缓存数据的之前,当缓存数据存在时才存储。
set username 0 0 8 wayne173 STORED get username VALUE username 0 8 wayne173 END prepend username 0 0 5 name_ STORED get username VALUE username 0 13 name_wayne173 END
memcached还有很多命令,比如对于存储为数字型的可以通过incr/decr命令进行增减操作等等,这里只列出开发和运维中经常使用的命令,其他的不再一一举例说明。
Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung gängiger Memcached-Befehle in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!