redis内存分配是怎样的
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,本篇内容介绍了"redis内存分配是怎样的"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!redis内
千家信息网最后更新 2025年12月02日redis内存分配是怎样的
本篇内容介绍了"redis内存分配是怎样的"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
redis内存管理是对malloc系列函数做了封装。额外记录了申请的内存大小信息。
#include
#include
static size_t used_memory = 0;
/*
分配sizeof(size_t)+size大小的内存,前面sizeof(size_t)个字节记录本次分配的大小,
记录分配的总内存大小,返回用于存储数据的内存首地址,即跨过sizeof(size_t)大小个字节
*/
void *zmalloc(size_t size) {
void *ptr = malloc(size+sizeof(size_t));
if (!ptr) return NULL;
*((size_t*)ptr) = size;
used_memory += size+sizeof(size_t);
return (char*)ptr+sizeof(size_t);
}
// 重新分配内存,ptr是旧数据的内存首地址,size是本次需要分片的内存大小
void *zrealloc(void *ptr, size_t size) {
void *realptr;
size_t oldsize;
void *newptr;
// ptr为空即没有旧数据,新申请一块内存即可,不涉及数据迁移
if (ptr == NULL) return zmalloc(size);
// 旧数据占据的内存大小
realptr = (char*)ptr-sizeof(size_t);
// 得到数据部分的内存大小
oldsize = *((size_t*)realptr);
// 以旧数据的内存地址为基地址,重新分配size+sizeof(size_t)大小的内存
newptr = realloc(realptr,size+sizeof(size_t));
if (!newptr) return NULL;
// 记录数据部分的内存大小
*((size_t*)newptr) = size;
// 重新计算已分配内存的总大小,sizeof(size_t)这块内存仍然在使用,不需要计算
used_memory -= oldsize;
used_memory += size;
// 返回存储数据的内存首地址
return (char*)newptr+sizeof(size_t);
}
void zfree(void *ptr) {
void *realptr;
size_t oldsize;
if (ptr == NULL) return;
// 算出真正的内存首地址
realptr = (char*)ptr-sizeof(size_t);
oldsize = *((size_t*)realptr);
// 减去释放的内存大小
used_memory -= oldsize+sizeof(size_t);
free(realptr);
}
// 复制字符串
char *zstrdup(const char *s) {
size_t l = strlen(s)+1;
char *p = zmalloc(l);
memcpy(p,s,l);
return p;
}
size_t zmalloc_used_memory(void) {
return used_memory;
}
"redis内存分配是怎样的"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
内存
大小
数据
分配
地址
内容
字节
更多
知识
部分
存储
实用
学有所成
接下来
信息
函数
困境
基地
基地址
字符
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
golang服务器入门
沈阳信创网络安全
网络安全桌面演练策划
数据库 qstring 乱码
网络安全法解读 阿里云
辉达时代网络技术有限公司
网络安全中的篡改是什么
我的世界为啥一直无法连接服务器
网络安全模式啥意思
对中国网络技术的认可
临沧市公安局网络安全杨绍周
oracle数据库字符及
电脑学习网络技术
网络安全介绍的ppt课件
网络安全六大特征
湛江地产软件开发
广电总局网络安全规定
广州工业软件开发哪家好
中小学如何提高网络安全知识
网络安全专业香港科技大学排名
网络技术f5是什么意思
qq音乐的数据库表结构
南通计算机网络技术应用
魔兽世界一个区要多少服务器
数据库的数据模型的是
网络安全中的篡改是什么
服务器扩容需要什么
网页游戏的数据库设计
武汉手游软件开发公司
一个plex账号 几个服务器