当前位置:网站首页>Comment voir la structure zskiplist dans le code source redis
Comment voir la structure zskiplist dans le code source redis
2022-04-21 18:36:00 【Frost】
Description de l'article:Lire redis Conception et mise en œuvre(Deuxième édition)No5Chapitre Lorsque la table de saut est implémentée,La structure des données de la table de saut n'est pas très bien comprise,Recherche sur InternetComment lireredisCode source,Trouver le code source pertinent.
1. Est - ce qu'un téléchargement supplémentaire du code source est nécessaire pour l'installation à l'aide d'un paquet compressé?
Bien que la page ait été trouvée au début,Mais il y a un problème:L'article utilise le code source pour installer,Ou installer en utilisant un paquet compressé,Après avoir fouillé un tas de pages,Découvrez que la réponse est toujours dans cet article
La raison en est la reconnaissance que:OuvertredisLe processus doit charger le programme,De cette façon, l'installation,Le code source doit être installéredisDans le catalogue pertinent de
Description:In redis-cli Entrée suivanteinfo Attention #Server Voir redis Version installée de
Les versions de cet article et de l'article référencé sont respectivement 6.2.6 Et 3.2.5,Supposons que toutes les versions de cet intervalle puissent être référencées Comment lireredisCode sourceConseils pour organiser les fichiers dans
Frappe.:Attention à ce qui est mentionné dans le texte Première phase
Table de saut:
server.h【zskiplsit Structure Et zskiplistNode Structure】
t_zset.c 【zslCreate,zslInsert,zslDeleteNode Attendez tout. zsl Fonctions au début】
2. Localiser versredis Installer le répertoiresrcEn bas.
[root@centos7 ~]# cd /usr/local/src/
[root@centos7 src]# ls
redis-6.2.6 redis-6.2.6.tar.gz
[root@centos7 src]# cd redis-6.2.6/
[root@centos7 redis-6.2.6]# ls
Le bleu est le répertoire des fichiers ,Blanc pour le fichier, Cyan pour exécutable
Peut passer ll Voir

3. Positionnement server.h Documentation
Entrée dans src/ J'ai trouvé beaucoup de fichiers dans le répertoire ,Comment déterminer si oui ou non server.h Et alors??
Méthode 1:Direct vim server.h Inconvénients: Si le fichier n'existe pas, il est créé dans ce répertoire avec le nom de fichier server.h Documents
Si vous ajoutez accidentellement ,Mise en œuvre rm -rf filename
Méthode 2:find -name filename
[root@centos7 src]# find -name server.h
./server.h
Conseils server.h Dans le répertoire courant
Méthode III:MobaXterm Terminal Sélectionner “Follow terminal folder”

4. Comment trouver zskiplist Déclarations structurelles
Méthode 1: Cliquez sur la liste des fichiers à gauche de l'image ci - dessus pour l'ouvrir directement
Inconvénients:ctrl + f Une seule recherche globale est prise en charge , Pas jusqu'à ce que ce soit sur mon ordinateur bug
Méthode 2:vim server.h
En mode commande /zskiplist

Après la recherche:Utiliser n Trouver la prochaine,Utiliser N Trouver le précédent

zskiplist Et zskiplistNode Description de la relation:
① zset :Par dict Et zskiplist Composition
② zskiplist: Le pointeur avant et le pointeur arrière sont zskiplistNode Type
/* ZSETs use a specialized version of Skiplists */
typedef struct zskiplistNode {
# obj
sds ele;
# socre
double score;
# Pointeur arrière
struct zskiplistNode *backward;
# Couche
struct zskiplistLevel {
# Pointeur vers l'avant
struct zskiplistNode *forward;
# Portée
unsigned long span;
} level[];
} zskiplistNode;
typedef struct zskiplist {
# zskiplistNode Pointeur de tête et de queue du type
struct zskiplistNode *header, *tail;
# Nombre de noeuds
unsigned long length;
# Nombre maximal de couches nodales dans le tableau
int level;
} zskiplist;
typedef struct zset {
dict *dict;
zskiplist *zsl;
} zset;
La raison de regarder le code source: Je n'ai pas compris le tableau de saut ci - dessus zskiplist,Je ne sais pas. zskiplist Et zskiplistNode Comment ça se rapporte
Parce que zskiplist Dans head - Oui. zskiplistNode Structure, Contient un pointeur vers l'arrière ,Peut être connecté zskiplistNode Noeud
zskiplist *zslCreate(void);
void zslFree(zskiplist *zsl);
zskiplistNode *zslInsert(zskiplist *zsl, double score, sds ele);
unsigned char *zzlInsert(unsigned char *zl, sds ele, double score);
int zslDelete(zskiplist *zsl, double score, sds ele, zskiplistNode **node);
zskiplistNode *zslFirstInRange(zskiplist *zsl, zrangespec *range);
zskiplistNode *zslLastInRange(zskiplist *zsl, zrangespec *range);
Résumé:Compris. zskiplist Première étape, Il faut continuer à lire ,Regarde le Code.,Questions,Résumé
版权声明
本文为[Frost]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/04/202204211834331545.html
边栏推荐
- Goldfish rhca memoirs: rh358 managing DNS and DNS servers -- overview of DNS services
- 年末我的Android面试复盘
- 「宇树科技」完成数亿元B轮系列融资,加速推动四足机器人实现规模化商业落地
- How to use the interface management tool Yapi? High appearance value, easy to manage and super easy to use
- 一个简单易用的文件上传方案
- generic paradigm
- Advanced formula 46 of C language: function and macro analysis
- After fastjson is automatically upgraded to fastjson2, the idea development environment is normally printed into a jar package and an error exception POM is reported after publishing the generated env
- Target penetration exercise 77-dc9
- How about qiniu securities account app? Who opened an account? Is it safe?
猜你喜欢

华为18级大牛整理总结:微服务设计和分布式服务框架原理实践文档

Advanced mathematical formulas (Part 5)

ACM anniversary C language

C语言进阶第46式:函数与宏分析

靶机渗透练习69-DC1

After fastjson is automatically upgraded to fastjson2, the idea development environment is normally printed into a jar package and an error exception POM is reported after publishing the generated env

曾經被爆買的產品又來了,求穩買他准沒錯

随笔小杂记(六)——tqdm进度条显示出现多余行
![[牛客网刷题 Day4] JZ23 链表中环的入口结点](/img/80/eca8951f581dc27cce9597af13e47e.png)
[牛客网刷题 Day4] JZ23 链表中环的入口结点

My android interview resume at the end of the year
随机推荐
ACM纪念日 C语言
Is the securities account of qiniu app safe? Who's driving here?
Question 3 on the third day of May 3, 2021
启牛商学院证券账户开户要钱嘛?安全吗?
Appium WebView technology principle of automatic test of dry goods app
How to test Android WebView for automated testing of dry goods app
C语言进阶第48式:函数设计原则
Essays (VI) -- tqdm progress bar shows more than one line
Target penetration exercise 75-dc7
After 4 rounds and 2 hours, finally cut meituan offer!
干货|app自动化测试之Andriod WebView如何测试
2021-5-3 第三天第三题
Advanced formula 45 of C language: the secret of function parameters (Part 2)
Target penetration exercise 70-dc2
Finally someone made it clear! It turns out that this is the global one-piece network technology with low delay
K-means, hierarchy, EM clustering introduction
Redis三种特殊数据类型——Hyperloglog基数统计
观测云登陆阿里云计算巢,共建ISV新生态
哪路神仙写的421页MySQL高级笔记,涵盖MySQL所有技术!太香了
Target penetration exercise 72-dc4