
Redis
文章平均质量分 87
highmaple
这个作者很懒,什么都没留下…
展开
-
Redis源码sds学习四-sdscpy和sdsdup
Redis源码sds学习四-sdscpy和sdsdup在sds动态字符串学习二中,学习了sdscat函数,该函数是字符串拼接函数,C语言中是strcat函数是字符串拼接函数。字符串操作中很多函数,其中在C语言中,还有个常用的字符串拷贝strcpy函数,今天来学习一下redis sds中对应的字符串拷贝函数:sdscpy和sdsdup。题外话:学习了几个redis sds字符串操作函数,而C语言中字符串操作函数命名一般为 str*,sds中命名一般为 sds*,*部分对应是一样的,不知道后续其它动态字符原创 2021-08-05 16:24:42 · 182 阅读 · 0 评论 -
Redis源码sds学习三
Redis sds动态字符串学习三GDB调试sdscat结构体指针变化问题在sds动态字符串学习之二那篇文章中,讲到了 sdscat 函数及内部内存重分配等 zremalloc 相关函数,在后来的gdb调试过程中,遇到奇怪的问题,在gdb调试到 sdsMakeRoomFor 函数中时,sds sdsMakeRoomFor(sds s, size_t addlen) { struct sdshdr *sh, *newsh; size_t free = sdsavail(s);原创 2021-07-21 13:55:31 · 115 阅读 · 0 评论 -
Redis源码zmalloc内存管理(2)
zmalloc内存管理(2)(Redis源码学习)1. 背景介绍在上一篇zmalloc内存管理(1)中留了一个问题,在 zmalloc 函数中用出现了条件编译,涉及到是否定义 HAVE_MALLOC_SIZE:#ifdef HAVE_MALLOC_SIZE update_zmalloc_stat_alloc(zmalloc_size(ptr)); return ptr;#else *((size_t*)ptr) = size; update_zmalloc_stat_原创 2021-07-20 15:52:45 · 142 阅读 · 0 评论 -
zmalloc内存管理(1)(Redis源码学习)
zmalloc内存管理(1)(Redis源码学习)在学习sds.c源码时,sdsnewlen函数中开始调用zmalloc相关库函数:sds sdsnewlen(const void *init, size_t initlen) { ... //省略部分代码 // 根据是否有初始化内容,选择适当的内存分配方式 // T = O(N) if (init) { // zmalloc 不初始化所分配的内存 sh = zmalloc(sizeof(原创 2021-07-08 16:40:05 · 378 阅读 · 0 评论 -
组建Redis sentinel问题`GLIBC_2.14’ not found和ps -ef 的uid为数字问题
RHEL6.9组建Redis sentinel集群遇到两个问题今天在组件Redis sentinel 集群时,遇到两个问题,之前已经组建多次,都没碰到类似问题,在解决这两个问题时,耗费些时间。问题1. ./redis-server: /lib64/libc.so.6: version `GLIBC_2.14’ not found 问题在将A服务器 RHEL6.9 上已经编译好的 Redis-3.0.3 整个目录,scp 到 RHEL6.9 服务器B上,在 A 上能正常运行的redis-server程原创 2021-07-03 08:47:44 · 234 阅读 · 0 评论 -
柔性数组(Redis源码学习)
柔性数组(Redis源码学习)1. 问题背景在阅读Redis源码中的字符串有如下结构,在sizeof(struct sdshdr)得到结果为8,在后续内存申请和计算中也用到。其实在工作中有遇到过这种 struct结构 + 应用数据的情况,但没有意识到自己使用的是柔性数组,在学习阅读Redis代码中,遇到该方法,就特总结记录之。/* * 类型别名,用于指向 sdshdr 的 buf 属性 */typedef char * sds;/* * 保存字符串对象的结构 */struct sdshdr {原创 2021-07-01 08:42:39 · 117 阅读 · 0 评论 -
__sync_fetch_and_add函数(Redis源码学习)
__sync_fetch_and_add函数(Redis源码学习)在学习redis-3.0源码中的sds文件时,看到里面有如下的C代码,之前从未接触过,所以为了全面学习redis源码,追根溯源,学习一下__sync_fetch_and_add的系列函数:#define update_zmalloc_stat_add(__n) __sync_add_and_fetch(&used_memory, (__n))在网上查找相关 __sync_add_and_fetch 函数的知识点,基本都是一样的原创 2021-06-28 16:09:42 · 406 阅读 · 0 评论