深入redis内部之redis启动过程之二

接上文,继续分析代码

1. 设置线程安全模式

/*设置线程安全标识符为1*/ void zmalloc_enable_thread_safeness(void) { zmalloc_thread_safe = 1;

2. 内存溢出处理

zmalloc_set_oom_handler(redisOutOfMemoryHandler);/* 内存溢出的调用方法*/   void zmalloc_set_oom_handler(void (*oom_handler)(size_t)) {

//调用下一级

static void (*zmalloc_oom_handler)(size_t) = zmalloc_default_oom;

//最终调用

static void zmalloc_default_oom(size_t size) { fprintf(stderr,"zmalloc: Out of memory trying to allocate %zu bytes\n",size); fflush(stderr); abort();}

3.生成hash seed

srand(time(NULL)^&^tv.tv_usec^getpid());

 3.1 time( )函数头文件:#include 函数定义:time_t time(time_t *timer)功能描述:该函数返回从197011000000秒至今所经过的秒数。如果time_t *timer非空指针,函数也会将返回值存到timer指针指向的内存。返回值:成功则返回秒数,失败则返回((time_t)-1)值,错误原因存于errno中。

3.2 getpid(取得进程识别码)表头文件 #include定义函数 pid_t getpid(void);函数说明 getpid()用来取得目前进程的进程识别码。

3.3 srand()函数 void srand(unsigned seed) 初始化随机数发生器。

3.4 gettimeofday()函数

#includeint gettimeofday(struct timeval*tv,struct timezone *tz )gettimeofday()会把目前的时间用tv 结构体返回,当地时区的信息则放到tz所指的结构中

3.5 设置hash seed

uint32_t dict_hash_function_seed = <span style="color: #0000ff;">void<span style="color: #000000;"> dictSetHashFunctionSeed(uint32_t seed) {
dict_hash_function_seed
=<span style="color: #000000;"> seed;
}

4. 检查是否sentime模式(集群的临时方案)

server.sentinel_mode = checkForSentinelMode( argc, **</span><span style="color: #0000ff;"&gt;if</span> (strstr(argv[<span style="color: #800080;"&gt;0</span>],<span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;redis-sentinel</span><span style="color: #800000;"&gt;"</span>) != NULL) <span style="color: #0000ff;"&gt;return</span> <span style="color: #800080;"&gt;1</span><span style="color: #000000;"&gt;; </span><span style="color: #0000ff;"&gt;for</span> (j = <span style="color: #800080;"&gt;1</span>; j < argc; j++<span style="color: #000000;"&gt;) </span><span style="color: #0000ff;"&gt;if</span> (!strcmp(argv[j],<span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;--sentinel</span><span style="color: #800000;"&gt;"</span>)) <span style="color: #0000ff;"&gt;return</span> <span style="color: #800080;"&gt;1</span><span style="color: #000000;"&gt;; </span><span style="color: #0000ff;"&gt;return</span> <span style="color: #800080;"&gt;0</span><span style="color: #000000;"&gt;;

}

相关文章

文章浏览阅读1.3k次。在 Redis 中,键(Keys)是非常重要的概...
文章浏览阅读3.3k次,点赞44次,收藏88次。本篇是对单节点的...
文章浏览阅读8.4k次,点赞8次,收藏18次。Spring Boot 整合R...
文章浏览阅读978次,点赞25次,收藏21次。在Centos上安装Red...
文章浏览阅读1.2k次,点赞21次,收藏22次。Docker-Compose部...
文章浏览阅读2.2k次,点赞59次,收藏38次。合理的JedisPool资...