Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
teknopedia

teknopedia

teknopedia

teknopedia

teknopedia
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Memcached – Wikipedia
Memcached – Wikipedia
aus Wikipedia, der freien Enzyklopädie
Memcached
Basisdaten

Entwickler Danga Interactive
Erscheinungsjahr 22. Mai 2003
Aktuelle Version 1.6.39[1]
(29. Juli 2025)
Betriebssystem Unix-Derivate, Windows
Programmier­sprache C[2][3]
Kategorie Cache-Server
Lizenz 3-Klausel-BSD[4]
deutschsprachig nein
memcached.org

Memcached [ˈmɛm.kæʃ.tː] ist ein Cache-Server. "Server" in der Bedeutung Soft-ware (die im selben Rechner laufen kann). Dieser Server dient zum Hinterlegen und Abholen von Daten aus dem Arbeitsspeicher. Die Software findet hauptsächlich Verwendung für dynamischen Websites, die Daten aus Datenbanksystemen zeitweise auf dem Server hinterlegen. Sie dient bei vielen dynamischen Websites mit Datenbankanbindung zur Leistungs-Verbesserung, indem durch die Vorhaltung von wichtigen Daten im Arbeitsspeicher Festplattenzugriffe vermieden werden beziehungsweise der Aufruf von aufwändigen und häufig verwendeten Datenbankabfragen – insbesondere SELECT-Anweisungen – minimiert wird. Dank Veröffentlichung unter der BSD-Lizenz (Berkeley Software Distribution) ist sie frei verwendbar.

Geschichte

[Bearbeiten | Quelltext bearbeiten]

Memcached wurde ursprünglich von der Firma Danga Interactive für das Internetportal LiveJournal entwickelt. Bis zum 15. Juni 2003 stand die Software unter der GPL, als die Lizenzierung zur BSD-Lizenz geändert wurde. Mittlerweile ist der Einsatz der Software weit verbreitet und dient beispielsweise allein bei Facebook und der Wikipedia zur Bedienung von Milliarden von Nutzern im Monat.

Funktionsweise

[Bearbeiten | Quelltext bearbeiten]

Die Verbindung zu einem solchen Server findet über die Protokolle TCP und IP statt. Daten werden mit einem eindeutigen Schlüsselwert versehen (vergleichbar mit dem Namen einer Variablen) und als Zeichenketten im Arbeitsspeicher abgelegt. Um das Abspeichern von Datentypen wie Ganz- oder Fließkommazahlen sowie Objekten zu ermöglichen, werden diese Daten durch die meisten Programmbibliotheken im Vorfeld serialisiert.

Daten können entweder dauerhaft oder zeitweise abgespeichert werden. Für den letzteren Fall übernimmt memcached das Löschen automatisch.

Beispiele

[Bearbeiten | Quelltext bearbeiten]

PHP

[Bearbeiten | Quelltext bearbeiten]
// Verbindung herstellen
$memcached = @memcache_connect('localhost', 11211)
             or die('FEHLER! Die Verbindung zum Server ist fehlgeschlagen!');

// Die Zeichenkette 'Hallo' unter der Bezeichnung 'wert1'
// für 1800 Sekunden abspeichern
$memcached->add('wert1', 'Hallo', false, 1800);

// Die Zeichenkette 'Hallo, nochmal' unter der Bezeichnung 'wert2'
// dauerhaft (Wert 0) in komprimierter Form abspeichern
$memcached->add('wert2', 'Hallo, nochmal', MEMCACHE_COMPRESSED, 0);

// 'wert1' löschen
$memcached->delete('wert1');

// 'wert2' mit dem Ganzzahlenwert 5979 ersetzen und für 23979 Sekunden
// unkomprimiert abspeichern. Vorhandene Werte müssen mit replace() überschrieben
// werden. Eine Verwendung von add() würde in einem solchen Fall zu einem
// Fehler führen!
$memcached->replace('wert2', 5979, false, 23979);

// 'wertObjekt' für 10 Sekunden mit dem Wert einer Instanz der PHP-Klasse
// stdClass anlegen
$memcached->add('wertObjekt', new stdClass(), false, 10);

// das gespeicherte Objekt von 'wertObjekt' ausgeben
echo var_export($memcached->get('wertObjekt'), true);

// sämtliche Statistiken, die der Server zur Verfügung stellt, ausgeben
var_dump($memcached->getStats());

// alle Werte löschen
$memcached->flush();

// Verbindung wieder schließen
$memcached->close();

Perl

[Bearbeiten | Quelltext bearbeiten]
use Modern::Perl;
use Cache::Memcached::Fast;

# neues memcached-Objekt erzeugen
#
my $cache = Cache::Memcached::Fast->new({ servers => [ '127.0.0.1:11211', '192.168.50.55:11211' ] });

# ein einfaches key/value Paar speichern
#
$cache->set( 'key', 'value' );

# komplexe Datenstrukturen speichern
#
$cache->set( 'key', { name => 'John', age => 22 } );

# gespeicherte Daten abfragen
#
my $data = $cache->get( 'key' );

# einen Datensatz löschen
#
$cache->delete( 'key' );

# alle Werte löschen
#
$cache->flush_all;

# Verbindung schließen
#
$cache->disconnect_all;

Java

[Bearbeiten | Quelltext bearbeiten]
// Liste für die Server erstellen
List<InetSocketAddress> memcachedServers = new ArrayList<InetSocketAddress>();
memcachedServers.add( new InetSocketAddress("localhost",11211) );

// Verbindung herstellen
MemcachedClient memcachedClient = new MemcachedClient(memcachedServers);

// Die Zeichenkette "Hallo" für eine Stunde (3600 Sekunden) unter der Bezeichnung "wert1" abspeichern
memcachedClient.add("wert1", 3600, "Hallo");

// "wert1" löschen
memcachedClient.delete("wert1");

// alle Werte löschen
memcachedClient.flush()

Missbrauch als DDoS-Werkzeug

[Bearbeiten | Quelltext bearbeiten]

Aus dem öffentlichen Internet erreichbare memcached-Server können von Angreifern verwendet werden, um Denial-of-Service-Angriffe zu verstärken. Da die Antwort auf eine memcached-Anfrage in der Regel bedeutend größer als die Anfrage ist, kann der Angreifer, wie bei einer DNS Amplification Attack, die Menge der an das Angriffsziel geschickten Daten erhöhen. Diese Angriffstechnik wurde bei einer Attacke auf github.com Ende Februar 2018 genutzt, um die bis dahin höchste bei einem DDoS-Angriff beobachtete Datenrate zu erreichen.[5]

Nur bei memcached-Servern, die hinter einer Firewall stehen, ist ein Missbrauch ausgeschlossen. Die Identifizierung der ungeschützten Server wird nach Experteneinschätzung noch mehrere Monate dauern.[6]

Weblinks

[Bearbeiten | Quelltext bearbeiten]
  • Offizielle Webpräsenz
  • Tim Schürmann: Verteiltes Caching mit memcached. In: ADMIN-Magazin. Abgerufen am 13. November 2016. 

Programmbibliotheken

[Bearbeiten | Quelltext bearbeiten]
  • ASP.NET
  • C
  • Java
  • Perl
  • PHP
  • Python
  • Ruby
  • Go

Software, die memcached verwendet

[Bearbeiten | Quelltext bearbeiten]
  • MediaWiki
  • Memcached Functions for MySQL – MySQL-Schnittstelle
  • pgmemcached – PostgreSQL-Schnittstelle
  • Drupal
  • Ruby on Rails
  • Symfony
  • CodeIgniter

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. ↑ Release 1.6.39. 29. Juli 2025 (abgerufen am 22. August 2025).
  2. ↑ InfoQ: JGroups Implementation of Memcached Supports Failover and JMX. (abgerufen am 23. Juni 2017).
  3. ↑ github.com. 6. Juli 2025.
  4. ↑ github.com. (abgerufen am 8. Juli 2018).
  5. ↑ Rekord-DDoS-Attacke mit 1,35 Terabit pro Sekunde gegen Github.com. In: heise Security. Abgerufen am 5. März 2018 (deutsch). 
  6. ↑ Diese DDoS-Attacken brechen alle Rekorde. Spiegel Online, 8. März 2018; abgerufen am 9. März 2018
Abgerufen von „https://de.teknopedia.teknokrat.ac.id/w/index.php?title=Memcached&oldid=257199990“
Kategorien:
  • Speicherverwaltung
  • Freie Proxy-Software
  • Freies Datenbankmanagementsystem

  • indonesia
  • Polski
  • العربية
  • Deutsch
  • English
  • Español
  • Français
  • Italiano
  • مصرى
  • Nederlands
  • 日本語
  • Português
  • Sinugboanong Binisaya
  • Svenska
  • Українська
  • Tiếng Việt
  • Winaray
  • 中文
  • Русский
Sunting pranala
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022
Email: pmb@teknokrat.ac.id