Table des matières
初期阅读
cache_create
cache_destroy
cache_alloc 与 cache_free
最后一个
原理
可以做什么
客户端
服务器
迟迟到来的原理
Maison base de données tutoriel mysql memcached 源码阅读之原理篇

memcached 源码阅读之原理篇

Jun 07, 2016 pm 04:41 PM
memcached 原理 源码 阅读

初期阅读 初期我是一行一行的看,遇到很多库函数不认识,于是研究了一番。 后来发现方向跑错了,那些库函数是为了实现网络编程,与 memcached 的本质没有关系。 于是开始查看函数名了。 cache_create 初始化 memcached . 主要工作是生成一个 cache_t 对象。

初期阅读

初期我是一行一行的看,遇到很多库函数不认识,于是研究了一番。
后来发现方向跑错了,那些库函数是为了实现网络编程,与 memcached 的本质没有关系。
于是开始查看函数名了。

cache_create

初始化 memcached .

主要工作是生成一个 cache_t 对象。

cache_t* cache_create(const char *name, size_t bufsize, size_t align,
                      cache_constructor_t* constructor,
                      cache_destructor_t* destructor) {
    cache_t* ret = calloc(1, sizeof(cache_t));
    char* nm = strdup(name);
    void** ptr = calloc(initial_pool_size, sizeof(void*));
    ret->name = nm;
    ret->ptr = ptr;
    ret->freetotal = initial_pool_size;
    ret->constructor = constructor;
    ret->destructor = destructor;
    ret->bufsize = bufsize;
    return ret;
}
Copier après la connexion

cache_destroy

回收 memcached.

void cache_destroy(cache_t *cache) {
    while (cache->freecurr > 0) {
        void *ptr = cache->ptr[--cache->freecurr];
        if (cache->destructor) {
            cache->destructor(get_object(ptr), NULL);
        }
        free(ptr);
    }
    free(cache->name);
    free(cache->ptr);
    pthread_mutex_destroy(&cache->mutex);
    free(cache);
}
Copier après la connexion

cache_alloc 与 cache_free

申请一个节点和释放一个节点

最后一个

这样又看了结果函数,发现还是没有涉及到 memcached 的本质,这些在创建 服务器,还是网络编程的知识。
虽然我不会网络编程。

原理

可以做什么

memcached 是以 key-val 的方式储存的 map
而且key是字符串, val 是一个对象。

客户端

客户端连接上 memcached 的服务器后,可以set设置内容,get查询内容了。
内容是通过 socket 的方式传给服务器的。
数据分两部分,一部分是key,一部分是val的序列化。

服务器

对于服务器来说,接收到的数据其实就是两个字符串的映射 map 所以这时就简单了。
直接实现一个 hash table 就行了。
刚好前几天我实现了一个精简版的 hash table, 刚好可以用上。
只不过需要加一个字符串val字段,而key字段永远是字符串。
又由于 key 是字符串,所以字符串的 hash 函数就不需要用户提供了。
对于 val 同样是这样,字符串判断相等直接 cmp 即可。

这样 memcached 就很容易实现了。

迟迟到来的原理

服务器端分两部分功能。
第一步分是 hash table 用于存储 string 到 string 的映射。
第二部分是 服务器,用于接收客户端的请求:查询,增加,删除,更新等操作。

客户端实现只有一部了:向服务器发送查询,增加,删除,更新等操作。

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
1 Il y a quelques mois 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)

Analyse de la fonction et du principe de nohup Analyse de la fonction et du principe de nohup Mar 25, 2024 pm 03:24 PM

Analyse du rôle et du principe de nohup Dans les systèmes d'exploitation Unix et de type Unix, nohup est une commande couramment utilisée pour exécuter des commandes en arrière-plan. Même si l'utilisateur quitte la session en cours ou ferme la fenêtre du terminal, la commande peut. continuent toujours à être exécutés. Dans cet article, nous analyserons en détail la fonction et le principe de la commande nohup. 1. Le rôle de nohup : Exécuter des commandes en arrière-plan : Grâce à la commande nohup, nous pouvons laisser les commandes de longue durée continuer à s'exécuter en arrière-plan sans être affectées par la sortie de l'utilisateur de la session du terminal. Cela doit être exécuté

Comment utiliser Microsoft Reader Coach avec Immersive Reader Comment utiliser Microsoft Reader Coach avec Immersive Reader Mar 09, 2024 am 09:34 AM

Dans cet article, nous allons vous montrer comment utiliser Microsoft Reading Coach dans Immersive Reader sur un PC Windows. Les fonctionnalités de guidage en lecture aident les étudiants ou les individus à pratiquer la lecture et à développer leurs compétences en lecture. Vous commencez par lire un passage ou un document dans une application prise en charge, et sur cette base, votre rapport de lecture est généré par l'outil Reading Coach. Le rapport de lecture indique votre précision de lecture, le temps qu'il vous a fallu pour lire, le nombre de mots corrects par minute et les mots que vous avez trouvés les plus difficiles lors de la lecture. Vous pourrez également pratiquer les mots, ce qui vous aidera à développer vos compétences en lecture en général. Actuellement, seuls Office ou Microsoft365 (y compris OneNote pour le Web et Word pour We)

Discussion approfondie sur les principes et les pratiques du cadre Struts Discussion approfondie sur les principes et les pratiques du cadre Struts Feb 18, 2024 pm 06:10 PM

Analyse des principes et exploration pratique du framework Struts. En tant que framework MVC couramment utilisé dans le développement JavaWeb, le framework Struts a de bons modèles de conception et une bonne évolutivité et est largement utilisé dans le développement d'applications au niveau de l'entreprise. Cet article analysera les principes du framework Struts et l'explorera avec des exemples de code réels pour aider les lecteurs à mieux comprendre et appliquer le framework. 1. Analyse des principes du framework Struts 1. Architecture MVC Le framework Struts est basé sur MVC (Model-View-Con

Compréhension approfondie du principe d'implémentation de l'insertion par lots dans MyBatis Compréhension approfondie du principe d'implémentation de l'insertion par lots dans MyBatis Feb 21, 2024 pm 04:42 PM

MyBatis est un framework de couche de persistance Java populaire qui est largement utilisé dans divers projets Java. Parmi elles, l'insertion par lots est une opération courante qui peut améliorer efficacement les performances des opérations de base de données. Cet article explorera en profondeur le principe de mise en œuvre de l'insertion par lots dans MyBatis et l'analysera en détail avec des exemples de code spécifiques. Insertion par lots dans MyBatis Dans MyBatis, les opérations d'insertion par lots sont généralement implémentées à l'aide de SQL dynamique. En construisant un S contenant plusieurs valeurs insérées

Explication détaillée du principe du plug-in de pagination MyBatis Explication détaillée du principe du plug-in de pagination MyBatis Feb 22, 2024 pm 03:42 PM

MyBatis est un excellent framework de couche de persistance. Il prend en charge les opérations de base de données basées sur XML et les annotations. Il est simple et facile à utiliser. Il fournit également un mécanisme de plug-in riche. Parmi eux, le plug-in de pagination est l'un des plug-ins les plus fréquemment utilisés. Cet article approfondira les principes du plug-in de pagination MyBatis et l'illustrera avec des exemples de code spécifiques. 1. Principe du plug-in de pagination MyBatis lui-même ne fournit pas de fonction de pagination native, mais vous pouvez utiliser des plug-ins pour implémenter des requêtes de pagination. Le principe du plug-in de pagination est principalement d'intercepter MyBatis

Une analyse approfondie des fonctions et des principes de fonctionnement de la commande Linux chage Une analyse approfondie des fonctions et des principes de fonctionnement de la commande Linux chage Feb 24, 2024 pm 03:48 PM

La commande chage dans le système Linux est une commande utilisée pour modifier la date d'expiration du mot de passe d'un compte utilisateur. Elle peut également être utilisée pour modifier la date d'utilisation la plus longue et la plus courte du compte. Cette commande joue un rôle très important dans la gestion de la sécurité des comptes utilisateur. Elle peut contrôler efficacement la période d'utilisation des mots de passe utilisateur et améliorer la sécurité du système. Comment utiliser la commande chage : La syntaxe de base de la commande chage est : chage [option] nom d'utilisateur Par exemple, pour modifier la date d'expiration du mot de passe de l'utilisateur "testuser", vous pouvez utiliser la commande suivante.

Comment afficher le code source de Tomcat dans Idea Comment afficher le code source de Tomcat dans Idea Jan 25, 2024 pm 02:01 PM

Étapes pour afficher le code source de Tomcat dans IDEA : 1. Téléchargez le code source de Tomcat ; 2. Importez le code source de Tomcat dans IDEA ; 3. Visualisez le code source de Tomcat ; 4. Comprendre le principe de fonctionnement de Tomcat ; mise à jour ; 7. Utiliser des outils et des plug-ins ; 8. Participer à la communauté et contribuer. Introduction détaillée : 1. Téléchargez le code source de Tomcat Vous pouvez télécharger le package de code source depuis le site officiel d'Apache Tomcat. Généralement, ces packages de code source sont au format ZIP ou TAR, etc.

Analyse approfondie du principe de fonctionnement et mise en œuvre du framework Struts2 Analyse approfondie du principe de fonctionnement et mise en œuvre du framework Struts2 Jan 05, 2024 pm 04:08 PM

Interprétation des principes et méthodes d'implémentation du framework Struts2 Introduction : Struts2, en tant que framework MVC (Model-View-Controller) populaire, est largement utilisé dans le développement JavaWeb. Il fournit un moyen de séparer la couche Web de la couche de logique métier et est flexible et évolutif. Cet article présentera les principes de base et les méthodes de mise en œuvre du framework Struts2, et fournira quelques exemples de code spécifiques pour aider les lecteurs à mieux comprendre le framework. 1. Principe du cadre : St

See all articles