关于golang:redis数据结构附录

4次阅读

共计 657 个字符,预计需要花费 2 分钟才能阅读完成。

引言

本次对上一次的数据结构常识进行补充,次要有 redis 数据结构的相干利用场景和内存相干常识

<!– more–>

援用计数 - 内存

redis 中的对象回收机制是采纳援用计数的形式,首先咱们能够通过 redis 对象构造体代码可知

/*
 * Redis 对象
 */
typedef struct redisObject {
    ...
    // 援用计数
    int refcount;
    ...
} robj;

下面表格是和援用计数字段相干的 api

援用计数 - 共享

咱们晓得援用计数能够实现对象内存什么时候销毁,那么援用计数也能够用来对象共享

比方此时有一个对象 A,值为 10,新建了一个对象 B,值和类型都与 A 一样,则能够让他们指向同一个地址,而后援用计数 +1

留神:redis 初始化时候,会主动创立 10000 个字符串对象,包含 0 -9999 这 10000 个整数,当服务器要用到这些数字的字符串对象时候,redis 就不须要从新创立。(能够批改 redis.h/REDIS_SHARED_INTEGERS 进行批改)

redis> set A 100
OK

redis> OBJECT REFCOUNT A
(integer) 2

利用场景

redis 因为有多种数据结构,每种数据结构都有着不同的 api 和对应的工夫复杂度,因而在理论工作或者我的项目开发中,应该面对不同场景抉择不同的 redis 数据结构,因为本人在字节工作,会经常应用 redis,上面依据本人平时的一些总结进行论述,这个局部会继续更新

本人的网址:www.shicoder.top
欢送加群聊天 452380935
本文由博客一文多发平台 OpenWrite 公布!

正文完
 0