Redis
程序员学编程
会一点python,Go,C的程序员,欢迎大家关注。
展开
-
Redis Lua脚本编写快速指南
Redis Lua脚本编写快速指南文章目录Redis Lua脚本编写快速指南1、前置条件2、为什么需要Lua脚本?3、可是我什么都不知道4、给我看个例子5、你能解释一下脚本吗?6、还有更复杂的东西吗?7、是否必须指定完整的脚本文本才能运行它?8、更改JSON的内容9、我应该一直使用Lua脚本吗?Redis是一种基于内存的用于进程间通信和数据存储的软件工具。您可能听说过它可以运行Lua脚本,但是您仍然不确定怎么使用。那么请继续阅读本文。1、前置条件您应该在系统上安装Redis才能运行本文中的例子。阅原创 2020-12-25 15:13:35 · 2075 阅读 · 0 评论 -
Redis使用字符串和hash存储JSON,那个更高效?
Redis使用字符串和hash存储JSON,那个更高效?最近在排查一个线上问题,发现redis使用了一个hash key里面存储了600w的field,为啥这么多就是因为他把一个结构体中的字段分成了多个field存储。下面来看看到底应该怎么设计比较合理。一、问题一种使用简单的字符串键和值。键:用户,值:payload(整个JSON,可以为100-200 KB)SET user:1 payload使用哈希HSET user:1 username "someone" HSET user原创 2020-12-20 09:23:46 · 9662 阅读 · 1 评论 -
redis6.0 源码学习(五)ziplist
redis6.0 源码学习(五)ziplist文章目录redis6.0 源码学习(五)ziplist一、数据结构二、代码解析1、创建2、查找3、插入三、总结一、数据结构ziplist是经过特殊编码的双向链接列表,该列表具有很高的内存效率。 它存储字符串和整数值,其中整数被编码为实际整数,而不是一系列个字符。 它允许对列表的两侧进行push和pop操作且复杂度为O(1)。 但是由于每个操作都需要重新分配ziplist使用的内存,实际复杂度与ziplist使用的内存量有关。下图是ziplist得示意图:原创 2020-12-08 13:23:05 · 334 阅读 · 0 评论 -
redis6.0源码学习 (四)dict
redis6.0源码学习 (四)dict文章目录redis6.0源码学习 (四)dict1、数据结构1.1 dictht1.2 dictEntry1.3 dict2、dict的创建3、 元素的查找、插入和删除4、 rehash过程5、总结redis dict主要实现文件为src/dict.c 和dict.h,实现了 insert / del / replace / find / get-random-element操作。哈希表会自动以调整大小,冲突通过链接处理。1、数据结构1.1 dictht在看原创 2020-12-08 13:22:59 · 292 阅读 · 0 评论 -
redis6.0源码学习(三)adlist
redis6.0源码学习(三)adlist文章目录redis6.0源码学习(三)adlist1、数据结构2、创建3、插入节点3.1 链表头插入3.2 链表尾插入3.3 链表某节点前后插入4、删除节点5、合并链表6、总结1、数据结构下面是adlist主要结构体:typedef struct listNode { struct listNode *prev; //prev指针,指向前一个节点 struct listNode *next;//next指针,指向下一个节点 void原创 2020-12-08 13:22:53 · 445 阅读 · 0 评论 -
redis6.0源码学习(二)sds
redis6.0源码学习(二)sds文章目录redis6.0源码学习(二)sds1、数据结构2、sds创建3、sds扩容4、sds缩容5、总结1、数据结构源码所在文件 sds.h 和 sds.csds的定义typedef char *sds;sds字符串根据字符串的长度,划分了五种结构体sdshdr5、sdshdr8、sdshdr16、sdshdr32、sdshdr64,分别对应的类型为SDS_TYPE_5、SDS_TYPE_8、SDS_TYPE_16、SDS_TYPE_32、SDS_TYPE原创 2020-12-08 13:22:47 · 462 阅读 · 0 评论 -
redis6.0源码学习(一)学习路径
redis6.0源码学习(一)学习路径参考网上给出来的学习路径对源码进行学习,同时用博客的形式记录学习过程。1 、熟悉Redis的数据结构部分内存分配 zmalloc.c和zmalloc.h动态字符串 sds.h和sds.c双端链表 adlist.c和adlist.h字典 dict.h和dict.c跳跃表 server.h文件里面关于zskiplist结构和zskiplistNode结构,以及t_zset.c中所有zsl开头的函数,比如 zslCreate、zslInsert、zslDele原创 2020-12-08 13:22:39 · 373 阅读 · 0 评论