Redis内存分配简单分析

             Redis内存管理
             
1.Redis内存申请内存方式有三种:

     (1)系统自带的malloc/free方式进行申请/释放。
     (2)使用tcmalloc进行内存的申请/释放。
     (3)使用jemalloc进行内存申请/释放。

    /* Explicitly override malloc/free etc when using tcmalloc. */
    #if defined(USE_TCMALLOC)
    #define malloc(size) tc_malloc(size)
    #define calloc(count,size) tc_calloc(count,size)
    #define realloc(ptr,size) tc_realloc(ptr,size)
    #define free(ptr) tc_free(ptr)
    #elif defined(USE_JEMALLOC)
    #define malloc(size) je_malloc(size)
    #define calloc(count,size) je_calloc(count,size)
    #define realloc(ptr,size) je_realloc(ptr,size)
    #define free(ptr) je_free(ptr)
    #endif

2.内存计数器上使用了gcc的一组原子操作,实现的功能就是在used_memory+n的操作

//1.先做操作,再返回变化后的值
//2.先返回变化前的值,再做操作
#if defined(__ATOMIC_RELAXED)
#define update_zmalloc_stat_add(__n) __atomic_add_fetch(&used_memory, (__n), __ATOMIC_RELAXED) //used_memory+=n;
#define update_zmalloc_stat_sub(__n) __atomic_sub_fetch(&used_memory, (__n), __ATOMIC_RELAXED) //used_memory-=n;
#elif defined(HAVE_ATOMIC)
#define update_zmalloc_stat_add(__n) __sync_add_and_fetch(&used_memory, (__n)) //used_memory+=n;
#define update_zmalloc_stat_sub(__n) __sync_sub_and_fetch(&used_memory, (__n)) //used_memory-=n;
#else
    
3.还有一部函数获取系统的配置信息

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值