redis为什么快
2021-10-17 22:03:33 小德 Redis 浏览85
1、redis 线程模型redis高并发的核心秘密是其线程模型,才有单线程,NIO,异步的线程模型。redis使用文件事件处理器(file event handler)处理所有事件,这个文件事件处理器是单线程,所以redis叫单线程。文件处理器才有IO多路复用器,同时监听多个socket,将产生事件的socket放入内存队列中,事件分发器根据socket上的事件类型,选择对应的事件处理器进行处理。     ...
Socket理解
2021-10-17 20:45:29 小德 网络 浏览99
1、what is Socket fd.    简单说就是网络fd 网络通信的一种方式,抛开底层和协议细节,网络通信和文件读写从接口上本质没有区别,读过来、写过去,简称IO。    Socket是操作系统为了方便网络编程而设计出来的编程接口。对于网络操作,由Socket的体现就是open-> read/write->close这样的编程模型,统一到文件的一种形式。    Socket的open就是 ...
raft算法
2021-10-17 15:26:37 小德 算法 浏览91
一、简介    raft算法是一个分布式一致性算法,一主多从的架构,通过同步日志的形式达到数据一致性,两段式提交类似TCC的形式同步日志,大部分节点成功即成功。二、选主算法    初始化:各分布式节点,按先到先得的方式竞争主,随后产生主从节点,和任期term  整型,主收到信息向从发出同步命令,从返回主成功,主向从发出提交信息命令,从提交完成返回主成功信息。 &nbs ...
打印日志的建议
2021-10-17 15:07:20 小德 浏览83
1、选择合适的日志级别    error:对业务有影响需要配置运维监控的    warn:对业务影响不大,需开发关注    info:记录排查问题的关键信息 时间戳  出参 入参 调用时间    debug:关键逻辑debug   &nb ...
Redis使用建议
2021-10-12 16:27:06 小德 Redis 浏览102
一、节省内存    1、控制Key长度,key 字符缩写    2、避免存储bigKey string 大小控制在10KB以内,List HASH Set Zset 元素控制在1w以内    3、使用合适的数据类型:尽量用int  尽量减少数据元素     &nbs ...
缓存和数据一致性问题
2021-09-24 20:51:38 小德 浏览146
一、简单的缓存引入方式1、数据库的数据全量刷入缓存,不设置失效时间2、写请求只更新数据库,不更新缓存3、定时任务,定时刷全量数据库的数据,更新到缓存中优点:所有数据都能命中缓存,效率很高缺点:缓存利用率低,不访问的数据一直在缓存中         数据不一致,取决于定时任务的执行频率适合场景:体量小,对数据一致性要求不高的业务场景 ...
kafka快速入门
2021-09-09 16:58:42 小德 kafka 浏览181
一、简介    kafka是分布式的发布--订阅消息系统,分布式流处理平台,作为一个集群,运行在一台或者多态服务器上。每条记录包含一个key,一个value和一个timestamp.支持批量读写,并会对消息进行批量压缩,支持分区(在线分区,在线水平扩展),保证分区内的消息的顺序传输,而分区之间可以并发操作,支持多个副本等关键特性。 ...
PHP内存管理
2021-08-27 16:24:58 小德 PHP 浏览186
一、变量自动GC1、在函数中定义变量时,分配一块内存用于保存zval以及对应的value结构,在函数返回时再将内存释放,如果在函数执行期间该变量作为参数调用了其他函数或者赋值给了其他变量,则把变量赋值赋值一份,变量之间相互独立不会冲突。这种方法会带来深拷贝的问题,内存浪费,基于此,当变量赋值时、传递时不进行深拷贝,而是多个变量公用一个value,引用计数来记录value有多少个变量在使用,当某个变量改变时无法继续与其他变量公用value,这个时候进行深拷贝分离value,这就是写时复制。二、引用计数引用计数用来记录当前有多少个zval指向同一个z ...