redis内存分配是怎样的
发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,本篇内容介绍了"redis内存分配是怎样的"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!redis内
千家信息网最后更新 2025年01月31日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安全错误
数据库的锁怎样保障安全
网络安全进校园企业社区
数据库安全技术意义
数据库 关系 定义
宁夏西夏区政务软件开发公司
游戏服务器多少人
vn py 数据库
普法小剧场网络安全
室内设计外文文献数据库
虚拟主机支持数据库类型
木瓜互联网科技幻想儿童画
销售软件开发收费
数据库恢复设备激活错误
15mm厚的硬盘服务器能用吗
办公现场网络安全检查
数据库 代数
酷音铃声软件开发者
济南质量好的服务器供货商
国家网络安全法律法规近10年
简述《中国期刊全文数据库》
黄浦区正规网络技术服务哪里好
数据库索引和期刊有什么区别
moxa串口服务器通讯错误
家里电脑可以装服务器吗
服务器诊断卡
网络安全保障谁先提出
网络安全工程师生活方式
网络安全教育大赛主题
被关闭的服务器
真封神服务器端
服务器开机卡在一个界面怎么办