Table des matières
memchache 将对象序列化后保存
查看源代码
结论
Maison base de données tutoriel mysql 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>
Copier après la connexion
<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>
Copier après la connexion

这里写图片描述

查看源代码

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

<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>
Copier après la connexion

结论

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

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment configurer la fonction de démarrage du clavier sur une carte mère GIGABYTE (activer le mode de démarrage du clavier sur la carte mère GIGABYTE) Comment configurer la fonction de démarrage du clavier sur une carte mère GIGABYTE (activer le mode de démarrage du clavier sur la carte mère GIGABYTE) Dec 31, 2023 pm 05:15 PM

Comment configurer le démarrage du clavier sur la carte mère de Gigabyte Tout d'abord, s'il doit prendre en charge le démarrage du clavier, il doit s'agir d'un clavier PS2 ! ! Les étapes de configuration sont les suivantes : Étape 1 : appuyez sur Suppr ou F2 pour entrer dans le BIOS après le démarrage, et entrez dans le mode avancé (avancé) du BIOS. Les cartes mères ordinaires entrent dans le mode EZ (facile) de la carte mère par défaut. pour appuyer sur F7 pour passer au mode avancé. Les cartes mères de la série ROG entrent dans le BIOS par défaut (nous utilisons le chinois simplifié pour démontrer) Étape 2 : Sélectionnez - [Avancé] - [Gestion avancée de l'alimentation (APM)] Étape 3 : Recherchez l'option [Réveil par le clavier PS2] Étape 4 : Cette option est désactivée par défaut. Après avoir tiré vers le bas, vous pouvez voir trois options de configuration différentes, à savoir appuyer sur [barre d'espace] pour allumer l'ordinateur, appuyer sur groupe.

Huawei lancera l'année prochaine des produits de stockage MED innovants : la capacité du rack dépasse 10 Po et la consommation électrique est inférieure à 2 kW Huawei lancera l'année prochaine des produits de stockage MED innovants : la capacité du rack dépasse 10 Po et la consommation électrique est inférieure à 2 kW Mar 07, 2024 pm 10:43 PM

Ce site Web a rapporté le 7 mars que le Dr Zhou Yuefeng, président de la gamme de produits de stockage de données de Huawei, a récemment assisté à la conférence MWC2024 et a spécifiquement présenté la solution de stockage magnétoélectrique OceanStorArctic de nouvelle génération conçue pour les données chaudes (WarmData) et les données froides (ColdData). Zhou Yuefeng, président de la gamme de produits de stockage de données de Huawei, a publié une série de solutions innovantes Source de l'image : Le communiqué de presse officiel de Huawei joint à ce site est le suivant : Le coût de cette solution est 20 % inférieur à celui de la bande magnétique, et son coût est de 20 % inférieur à celui de la bande magnétique. la consommation électrique est 90 % inférieure à celle des disques durs. Selon les médias technologiques étrangers blockandfiles, un porte-parole de Huawei a également révélé des informations sur la solution de stockage magnétoélectrique : le disque magnétoélectronique (MED) de Huawei est une innovation majeure dans le domaine des supports de stockage magnétiques. ME de première génération

Processus d'installation de Git sur Ubuntu Processus d'installation de Git sur Ubuntu Mar 20, 2024 pm 04:51 PM

Git est un système de contrôle de version distribué rapide, fiable et adaptable. Il est conçu pour prendre en charge des flux de travail distribués et non linéaires, ce qui le rend idéal pour les équipes de développement de logiciels de toutes tailles. Chaque répertoire de travail Git est un référentiel indépendant avec un historique complet de toutes les modifications et la possibilité de suivre les versions même sans accès au réseau ni serveur central. GitHub est un référentiel Git hébergé sur le cloud qui fournit toutes les fonctionnalités du contrôle de révision distribué. GitHub est un référentiel Git hébergé sur le cloud. Contrairement à Git qui est un outil CLI, GitHub dispose d'une interface utilisateur graphique basée sur le Web. Il est utilisé pour le contrôle de version, ce qui implique de collaborer avec d'autres développeurs et de suivre les modifications apportées aux scripts et aux scripts au fil du temps.

Comment activer la connexion directe d'une carte graphique indépendante sur Shenzhou Xuanlong m7e8s3 ? Comment activer la connexion directe d'une carte graphique indépendante sur Shenzhou Xuanlong m7e8s3 ? Jan 04, 2024 am 09:24 AM

Comment activer la connexion directe de la carte graphique indépendante du Shenzhou Xuanlong m7 Pour activer la fonction de connexion directe de la carte graphique indépendante du Shenzhou Xuanlong m7, vous pouvez suivre les étapes suivantes : 1. Tout d'abord, assurez-vous d'avoir installé le pilote de la carte graphique indépendante. Vous pouvez vous rendre sur le site officiel de Shenzhou ou sur le site officiel du fabricant indépendant de la carte graphique pour télécharger et installer le dernier pilote adapté à votre modèle de carte graphique. 2. Sur le bureau de l'ordinateur, cliquez avec le bouton droit sur un espace vide et sélectionnez « Panneau de configuration NVIDIA » dans le menu contextuel (s'il s'agit d'une carte graphique AMD, sélectionnez « Paramètres AMDradeon »). 3. Dans le panneau de configuration, recherchez « Paramètres 3D » ou une option du même nom et cliquez pour entrer. 4. Dans « Paramètres 3D », vous devez rechercher « Paramètres globaux » ou une option du même nom. Ici, vous pouvez spécifier l'utilisation d'un nom unique

Qu'est-ce que l'objet Request en PHP ? Qu'est-ce que l'objet Request en PHP ? Feb 27, 2024 pm 09:06 PM

L'objet Request en PHP est un objet utilisé pour gérer les requêtes HTTP envoyées par le client au serveur. Grâce à l'objet Request, nous pouvons obtenir les informations de demande du client, telles que la méthode de demande, les informations d'en-tête de demande, les paramètres de demande, etc., afin de traiter et de répondre à la demande. En PHP, vous pouvez utiliser des variables globales telles que $_REQUEST, $_GET, $_POST, etc. pour obtenir les informations demandées, mais ces variables ne sont pas des objets, mais des tableaux. Afin de traiter les informations demandées de manière plus flexible et plus pratique, vous pouvez

Comment convertir le tableau de résultats d'une requête MySQL en objet ? Comment convertir le tableau de résultats d'une requête MySQL en objet ? Apr 29, 2024 pm 01:09 PM

Voici comment convertir un tableau de résultats de requête MySQL en objet : Créez un tableau d'objets vide. Parcourez le tableau résultant et créez un nouvel objet pour chaque ligne. Utilisez une boucle foreach pour attribuer les paires clé-valeur de chaque ligne aux propriétés correspondantes du nouvel objet. Ajoute un nouvel objet au tableau d'objets. Fermez la connexion à la base de données.

Comment distinguer les vraies et fausses boîtes à chaussures de chaussures Nike (maîtrisez une astuce pour les identifier facilement) Comment distinguer les vraies et fausses boîtes à chaussures de chaussures Nike (maîtrisez une astuce pour les identifier facilement) Sep 02, 2024 pm 04:11 PM

En tant que marque de sport de renommée mondiale, les chaussures Nike ont attiré beaucoup d'attention. Cependant, il existe également un grand nombre de produits contrefaits sur le marché, notamment de fausses boîtes à chaussures Nike. Distinguer les véritables boîtes à chaussures des fausses est crucial pour protéger les droits et les intérêts des consommateurs. Cet article vous fournira quelques méthodes simples et efficaces pour vous aider à faire la distinction entre les vraies et les fausses boîtes à chaussures. 1 : Titre de l'emballage extérieur En observant l'emballage extérieur des boîtes à chaussures Nike, vous pouvez découvrir de nombreuses différences subtiles. Les véritables boîtes à chaussures Nike contiennent généralement des matériaux en papier de haute qualité, doux au toucher et sans odeur âcre évidente. Les polices et les logos des boîtes à chaussures authentiques sont généralement clairs et détaillés, et il n'y a pas de flou ni d'incohérence de couleur. 2 : titre de marquage à chaud du logo. Le logo sur les boîtes à chaussures Nike est généralement imprimé à chaud. La partie de marquage à chaud sur la boîte à chaussures authentique s'affichera.

Quelle est la résolution du Savior y7000p lors de la lecture de CF (comment régler le plein écran lors de la lecture de CF sur Savior y7000) Quelle est la résolution du Savior y7000p lors de la lecture de CF (comment régler le plein écran lors de la lecture de CF sur Savior y7000) Jan 07, 2024 am 10:13 AM

Quelle est la résolution du Savior Y7000P lors de la lecture de CF ? La résolution du Savior Y7000P lors de la lecture de CF est de 1920*1080. Cet ordinateur étant équipé d'une carte graphique GTX1650 et d'un processeur i5-9300H, ses performances sont relativement bonnes et suffisantes pour répondre aux besoins de jeux comme CF. Dans le même temps, 1920*1080 est la résolution actuelle des moniteurs d'e-sport grand public, et la qualité et la clarté de l'image sont suffisantes. De plus, si certains joueurs ont des exigences plus élevées, vous pouvez réduire de manière appropriée les paramètres de qualité d'image du jeu pour obtenir une expérience de jeu plus fluide. Afin de profiter d'une expérience visuelle plus claire, vous pouvez régler la résolution du Savior y7000p à 2560*1400. De cette façon, vous pourrez profiter d’un affichage d’image de meilleure qualité. Equipé du modèle Savior Y7000P 2022

See all articles