Inhaltsverzeichnis
memchache 将对象序列化后保存
查看源代码
结论
Heim Datenbank MySQL-Tutorial memcache 怎么存储的对象

memcache 怎么存储的对象

Jun 07, 2016 pm 02:50 PM
memcache 存储 对象 怎么

memchache 将对象序列化后保存 memcahce将值序列化成字节数组,然后存储到缓存中。 如下例,我们将user对象序列化到文件a.txt中,同时将user保存到缓存中,通过比较文件和缓存中的值 发现,两者是一样的。 public class User implements Serializable { priv

memchache 将对象序列化后保存

memcahce将值序列化成字节数组,然后存储到缓存中。

如下例,我们将user对象序列化到文件a.txt中,同时将user保存到缓存中,通过比较文件和缓存中的值
发现,两者是一样的。

<code class=" hljs java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">User</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Serializable</span>{</span>

    <span class="hljs-keyword">private</span> String name;
    <span class="hljs-keyword">private</span> String address;



    <span class="hljs-keyword">public</span> <span class="hljs-title">User</span>(String name, String address) {
        <span class="hljs-keyword">super</span>();
        <span class="hljs-keyword">this</span>.name = name;
        <span class="hljs-keyword">this</span>.address = address;
    }
}</code>
Nach dem Login kopieren
<code class=" hljs cs"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title">main</span>(String[] args) throws InterruptedException, ExecutionException, FileNotFoundException, IOException {
         MemcachedClient mcc =  <span class="hljs-keyword">null</span>;
          <span class="hljs-keyword">try</span>{
             <span class="hljs-comment">// 本地连接 Memcached 服务</span>
              mcc = <span class="hljs-keyword">new</span> MemcachedClient(<span class="hljs-keyword">new</span> InetSocketAddress(<span class="hljs-string">"127.0.0.1"</span>, <span class="hljs-number">11211</span>));
             System.<span class="hljs-keyword">out</span>.println(<span class="hljs-string">"Connection to server sucessful."</span>);



          }<span class="hljs-keyword">catch</span>(Exception ex){
             System.<span class="hljs-keyword">out</span>.println( ex.getMessage() );
          }

          User u = <span class="hljs-keyword">new</span> User(<span class="hljs-string">"junwang"</span>,<span class="hljs-string">"qingdao city"</span>);

          ObjectOutputStream oos = <span class="hljs-keyword">new</span> ObjectOutputStream(<span class="hljs-keyword">new</span> FileOutputStream(<span class="hljs-keyword">new</span> File(<span class="hljs-string">"a.txt"</span>)) );
          oos.writeObject(u);


          Future fo =  mcc.<span class="hljs-keyword">set</span>(<span class="hljs-string">"myuser"</span>, <span class="hljs-number">5</span>*<span class="hljs-number">60</span>*<span class="hljs-number">1000</span>, u);
          <span class="hljs-comment">// 查看存储状态</span>
          System.<span class="hljs-keyword">out</span>.println(<span class="hljs-string">"set status:"</span> + fo.<span class="hljs-keyword">get</span>());

          <span class="hljs-comment">// 输出值</span>
          System.<span class="hljs-keyword">out</span>.println(<span class="hljs-string">"myuser value in cache - "</span> + mcc.<span class="hljs-keyword">get</span>(<span class="hljs-string">"myuser"</span>));

          <span class="hljs-comment">// 关闭连接</span>
           mcc.shutdown();
       }</code>
Nach dem Login kopieren

这里写图片描述

查看源代码

查看源代码,可以发现正是将对象序列化,然后保存。证明了我们上述的猜想。

<code class=" hljs cs">BaseSerializingTranscoder.java

<span class="hljs-keyword">protected</span> <span class="hljs-keyword">byte</span>[] <span class="hljs-title">serialize</span>(Object o) {
    <span class="hljs-keyword">if</span> (o == <span class="hljs-keyword">null</span>) {
      <span class="hljs-keyword">throw</span> <span class="hljs-keyword">new</span> NullPointerException(<span class="hljs-string">"Can't serialize null"</span>);
    }
    <span class="hljs-keyword">byte</span>[] rv=<span class="hljs-keyword">null</span>;
    ByteArrayOutputStream bos = <span class="hljs-keyword">null</span>;
    ObjectOutputStream os = <span class="hljs-keyword">null</span>;
    <span class="hljs-keyword">try</span> {
      bos = <span class="hljs-keyword">new</span> ByteArrayOutputStream();
      os = <span class="hljs-keyword">new</span> ObjectOutputStream(bos);
      os.writeObject(o);
      os.close();
      bos.close();
      rv = bos.toByteArray();
    } <span class="hljs-keyword">catch</span> (IOException e) {
      <span class="hljs-keyword">throw</span> <span class="hljs-keyword">new</span> IllegalArgumentException(<span class="hljs-string">"Non-serializable object"</span>, e);
    } <span class="hljs-keyword">finally</span> {
      CloseUtil.close(os);
      CloseUtil.close(bos);
    }
    <span class="hljs-keyword">return</span> rv;
  }
</code>
Nach dem Login kopieren

结论

值的存储,都是序列化成字节数组,然后保存

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So richten Sie die Tastatur-Boot-Funktion auf einem GIGABYTE-Motherboard ein (aktivieren Sie den Tastatur-Boot-Modus auf dem GIGABYTE-Motherboard) So richten Sie die Tastatur-Boot-Funktion auf einem GIGABYTE-Motherboard ein (aktivieren Sie den Tastatur-Boot-Modus auf dem GIGABYTE-Motherboard) Dec 31, 2023 pm 05:15 PM

So richten Sie den Tastaturstart auf dem Motherboard von Gigabyte ein. Wenn es den Tastaturstart unterstützen muss, muss es sich um eine PS2-Tastatur handeln! ! Die Einstellungsschritte sind wie folgt: Schritt 1: Drücken Sie Entf oder F2, um das BIOS nach dem Booten aufzurufen, und rufen Sie den Advanced-Modus (Normal) des BIOS auf. Standardmäßig wechseln Sie in den EZ-Modus (Easy) des Motherboards Drücken Sie F7, um in den erweiterten Modus zu wechseln. Motherboards der ROG-Serie rufen standardmäßig den erweiterten Modus auf (zur Demonstration verwenden wir vereinfachtes Chinesisch). Schritt 2: Wählen Sie „Erweitert“ – „Erweiterte Energieverwaltung (APM)“. Suchen Sie die Option [Aufwecken durch PS2-Tastatur] Schritt 4: Diese Option ist standardmäßig deaktiviert. Nach dem Herunterziehen sehen Sie drei verschiedene Einstellungsoptionen: Drücken Sie die [Leertaste], um den Computer einzuschalten, und drücken Sie die Gruppe

Huawei wird nächstes Jahr innovative MED-Speicherprodukte auf den Markt bringen: Die Rack-Kapazität übersteigt 10 PB und der Stromverbrauch beträgt weniger als 2 kW Huawei wird nächstes Jahr innovative MED-Speicherprodukte auf den Markt bringen: Die Rack-Kapazität übersteigt 10 PB und der Stromverbrauch beträgt weniger als 2 kW Mar 07, 2024 pm 10:43 PM

Diese Website berichtete am 7. März, dass Dr. Zhou Yuefeng, Präsident der Datenspeicherproduktlinie von Huawei, kürzlich an der MWC2024-Konferenz teilgenommen und speziell die magnetoelektrische Speicherlösung OceanStorArctic der neuen Generation vorgestellt hat, die für warme Daten (WarmData) und kalte Daten (ColdData) entwickelt wurde. Zhou Yuefeng, Präsident der Datenspeicherproduktlinie von Huawei, hat eine Reihe innovativer Lösungen veröffentlicht: Die dieser Website beigefügte offizielle Pressemitteilung von Huawei lautet wie folgt: Die Kosten dieser Lösung sind 20 % niedriger als die von Magnetbändern Der Stromverbrauch ist 90 % niedriger als der von Festplatten. Laut Foreign Technology Media BlocksandFiles gab ein Huawei-Sprecher auch Informationen über die magnetoelektrische Speicherlösung preis: Huaweis magnetoelektronische Disk (MED) sei eine bedeutende Innovation bei magnetischen Speichermedien. ME der ersten Generation

Git-Installationsprozess unter Ubuntu Git-Installationsprozess unter Ubuntu Mar 20, 2024 pm 04:51 PM

Git ist ein schnelles, zuverlässiges und anpassungsfähiges verteiltes Versionskontrollsystem. Es ist für die Unterstützung verteilter, nichtlinearer Arbeitsabläufe konzipiert und eignet sich daher ideal für Softwareentwicklungsteams jeder Größe. Jedes Git-Arbeitsverzeichnis ist ein unabhängiges Repository mit einem vollständigen Verlauf aller Änderungen und der Möglichkeit, Versionen auch ohne Netzwerkzugriff oder einen zentralen Server zu verfolgen. GitHub ist ein in der Cloud gehostetes Git-Repository, das alle Funktionen der verteilten Revisionskontrolle bietet. GitHub ist ein Git-Repository, das in der Cloud gehostet wird. Im Gegensatz zu Git, einem CLI-Tool, verfügt GitHub über eine webbasierte grafische Benutzeroberfläche. Es wird zur Versionskontrolle verwendet, was die Zusammenarbeit mit anderen Entwicklern und die Verfolgung von Änderungen an Skripten und anderen umfasst

Wie aktiviere ich den direkten Anschluss einer unabhängigen Grafikkarte am Shenzhou Xuanlong m7e8s3? Wie aktiviere ich den direkten Anschluss einer unabhängigen Grafikkarte am Shenzhou Xuanlong m7e8s3? Jan 04, 2024 am 09:24 AM

So aktivieren Sie die direkte Verbindung der unabhängigen Grafikkarte des Shenzhou Habe den Treiber der unabhängigen Grafikkarte installiert. Sie können die offizielle Shenzhou-Website oder die offizielle Website des unabhängigen Grafikkartenherstellers besuchen, um den neuesten Treiber herunterzuladen und zu installieren, der für Ihr Grafikkartenmodell geeignet ist. 2. Klicken Sie auf dem Desktop des Computers mit der rechten Maustaste auf eine leere Stelle und wählen Sie im Popup-Menü „NVIDIA-Systemsteuerung“ (wenn es sich um eine AMD-Grafikkarte handelt, wählen Sie „AMDRadeon-Einstellungen“). 3. Suchen Sie in der Systemsteuerung nach „3D-Einstellungen“ oder einer ähnlich benannten Option und klicken Sie zum Aufrufen. 4. Unter „3D-Einstellungen“ müssen Sie „Globale Einstellungen“ oder eine ähnlich benannte Option finden. Hier können Sie die Verwendung eines Unikats festlegen

Was ist das Request-Objekt in PHP? Was ist das Request-Objekt in PHP? Feb 27, 2024 pm 09:06 PM

Das Request-Objekt in PHP ist ein Objekt, das zur Verarbeitung von HTTP-Anfragen verwendet wird, die vom Client an den Server gesendet werden. Über das Request-Objekt können wir die Anforderungsinformationen des Clients abrufen, z. B. die Anforderungsmethode, die Anforderungsheaderinformationen, die Anforderungsparameter usw., um die Anforderung zu verarbeiten und zu beantworten. In PHP können Sie globale Variablen wie $_REQUEST, $_GET, $_POST usw. verwenden, um angeforderte Informationen zu erhalten, aber diese Variablen sind keine Objekte, sondern Arrays. Um Anfrageinformationen flexibler und bequemer bearbeiten zu können, können Sie dies tun

Wie konvertiere ich ein MySQL-Abfrageergebnisarray in ein Objekt? Wie konvertiere ich ein MySQL-Abfrageergebnisarray in ein Objekt? Apr 29, 2024 pm 01:09 PM

So konvertieren Sie ein MySQL-Abfrageergebnis-Array in ein Objekt: Erstellen Sie ein leeres Objekt-Array. Durchlaufen Sie das resultierende Array und erstellen Sie für jede Zeile ein neues Objekt. Verwenden Sie eine foreach-Schleife, um die Schlüssel-Wert-Paare jeder Zeile den entsprechenden Eigenschaften des neuen Objekts zuzuweisen. Fügt dem Objektarray ein neues Objekt hinzu. Schließen Sie die Datenbankverbindung.

So erkennen Sie echte und gefälschte Schuhkartons mit Nike-Schuhen (beherrschen Sie einen Trick, um sie leicht zu identifizieren) So erkennen Sie echte und gefälschte Schuhkartons mit Nike-Schuhen (beherrschen Sie einen Trick, um sie leicht zu identifizieren) Sep 02, 2024 pm 04:11 PM

Als weltbekannte Sportmarke haben die Schuhe von Nike viel Aufmerksamkeit erregt. Allerdings gibt es auch eine Vielzahl gefälschter Produkte auf dem Markt, darunter auch gefälschte Nike-Schuhkartons. Die Unterscheidung echter Schuhkartons von gefälschten ist für den Schutz der Rechte und Interessen der Verbraucher von entscheidender Bedeutung. In diesem Artikel erfahren Sie einige einfache und effektive Methoden, mit denen Sie zwischen echten und gefälschten Schuhkartons unterscheiden können. 1: Titel der Außenverpackung Wenn Sie sich die Außenverpackung von Nike-Schuhkartons ansehen, können Sie viele subtile Unterschiede feststellen. Originale Nike-Schuhkartons bestehen in der Regel aus hochwertigen Papiermaterialien, die sich glatt anfühlen und keinen offensichtlichen stechenden Geruch verströmen. Die Schriftarten und Logos auf authentischen Schuhkartons sind in der Regel klar und detailliert und es gibt keine Unschärfen oder Farbinkonsistenzen. 2: Der Logo-Heißprägetitel ist normalerweise auf dem Original-Schuhkarton abgebildet

Wie hoch ist die Auflösung des Savior y7000p bei der CF-Wiedergabe (So passen Sie den Vollbildmodus an, wenn Sie CF auf dem Savior Y7000 abspielen) Wie hoch ist die Auflösung des Savior y7000p bei der CF-Wiedergabe (So passen Sie den Vollbildmodus an, wenn Sie CF auf dem Savior Y7000 abspielen) Jan 07, 2024 am 10:13 AM

Welche Auflösung hat der Savior Y7000P bei der CF-Wiedergabe? Die Auflösung des Savior Y7000P bei der CF-Wiedergabe beträgt 1920*1080. Da dieser Computer mit einer GTX1650-Grafikkarte und einem i5-9300H-Prozessor ausgestattet ist, ist seine Leistung relativ gut und ausreichend, um die Anforderungen von Spielen wie CF zu erfüllen. Gleichzeitig ist 1920*1080 die aktuelle Auflösung gängiger E-Sport-Monitore und die Bildqualität und Klarheit sind ausreichend. Darüber hinaus können Sie bei Spielern mit höheren Anforderungen die Bildqualitätseinstellungen des Spiels entsprechend verringern, um ein flüssigeres Spielerlebnis zu erzielen. Um ein klareres visuelles Erlebnis zu genießen, können Sie die Auflösung des Savior y7000p auf 2560*1400 einstellen. Auf diese Weise können Sie eine Bilddarstellung in höherer Qualität genießen. Ausgestattet mit dem Modell Saviour Y7000P 2022

See all articles