redis之主从复制实现原理

主从复制redis为了实现⾼可⽤(⽐如解决单点故障的问题),会把数据复制多个副本部署到其他节点上,通过复制,实现Redis的⾼可⽤性,实现对数据的冗余备份,保证数据和服务的可靠性。在Redis中,用户可以通过执行SLAVEOF命令或者设置slaveof选项,让一个服务器去复制(replicate)另
数据库 2021年01月23日 2次浏览

redis之跳跃表的实现

跳跃表跳跃表(skiplist)是一种有序数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。跳跃表支持平均O(logN)、最坏O(N)复杂度的节点查找,还可以通过顺序性操作来批量处理节点。在大部分情况下,跳跃表的效率可以和平衡树相媲美,并且因为跳跃表的实现比平衡树要
数据结构 数据库 2021年01月23日 3次浏览

redis实现之字典

字典在不进行rehash的时候,使用的是ht[0],进行rehash的时候,ht[0]和ht[1]一起使用。typedefstructdict{//类型特定函数dictType*type;//私有数据void*privdata;//哈希表dicththt[2];//rehash索引//当rehash
数据结构 数据库 2021年01月23日 7次浏览

数据离奇消失bug------栈覆盖

在通过栈申请的内存有一个特点,他是连续的,这就很容易造成一个现象,如果出现栈溢出问题,会覆盖写掉其他变量的东西。比如我下面写的例子。#include<stdio.h>#include<stdlib.h>#include<string.h>charbigmem[50
c/c++ 2021年01月20日 7次浏览

通过fd链接去获取相应的本地地址和远端地址

通过fd链接去获取相应的本地地址和远端地址intget_ip_and_port_by_fd(intfd,char*local_ip,int*local_port,char*peer_ip,int*peer_port){if((!local_ip||!local_port)&&(!pe
c/c++ 网络编程 2021年01月20日 5次浏览

md5从16字节转换为32字节

md5从16字节变为32字节16字节到32字节的转换,实际上是通过将每个字节输出成十六进制数据的来的,所以通过一下函数实现。#include<stdio.h>voidmd5_short_to_long(char*md5_long,char*md5_short){inti=0;char*p
工具 c/c++ 2021年01月20日 5次浏览

为什么要有协程

同步IO操作同步IO操作相当于将所有的操作都放进了同一个流程里,如果出现阻塞行为,会导致整个程序的卡顿。客户体验极差。异步IO操作异步IO操作相当于将读写事件放到分支线程中去执行,当执行完毕去通知主线程就可以了,此时主线程可以安心的管理他的事件等操作,而不用浪费事件做这种花费事件很长的读写操作,提升
软件设计 2020年12月28日 56次浏览

redis服务器之AOF持久化

AOF持久化除了RDB持久化功能之外,Redis还提供了AOF(AppendOnlyFile)持久化功能。与RDB持久化通过保存数据库中的键值对来记录数据库状态不同,AOF持久化是通过保存Redis服务器所执行的写命令来记录数据库状态的。SETmsg"hello"SADDfrui
数据库 2020年12月28日 53次浏览

相同指针与全局变量编译之坑

相同指针陷阱这是一个将yp指针的值加到xp指针两次的函数。voidfun1(int*xp,int*yp){*xp+=*yp;*xp+=*yp;}这个代码表面一看可以优化成这样voidfun1(int*xp,int*yp){*xp+=2**yp;}但是如果yp于xp指针指向的是同一个地址,那么情况就会
c/c++ 2020年11月27日 81次浏览

服务器----分布式锁原理

锁线程锁lock(mutex)资源操作unlock(mutex)进程锁(nginx中accept锁-共享内存+信号量)分布式锁在不同机器的进程的锁分布式锁的实现方案数据库redis,mysqlzookeeper分布式锁有哪些特征互斥性。可重入性,一个进程允许递归获取锁(需要递归释放锁)。锁超时(进程
工具 c/c++ 网络编程 计算机网络 2020年11月22日 75次浏览