/images/avatar.jpg

Kiosk Studio (2022)

Redis持久化机制

Redis 最常见的一个用处就是当作缓存服务器,将后端数据库中的数据存入内存中,再直接从内存中读取数据是一个非常高效的方式。但是内存存储模式有一个问题,掉电后会丢失数据,所以作为一个数据库来用的话必须考虑一旦服务器宕机,内存中数据的保存。

Redis的持久化机制分为 AOF(Append Only File) 日志和 RDB 快照。

认识eBPF

eBPF 是从 BPF(Berkeley Packet Filter)技术扩展而来,最初就是为了实现快速包过滤而实现的一门技术,因为可以直接在内核中执行,避免了向用户态复制每一个数据包,从而极大提升了包过滤的性能。后来由于这个思路非常受到欢迎,在各个场景都需要内核态的快速开发,使得BPF不再限于网络栈,而是内核的一个顶级子系统。即成了现在的 eBPF 。

https://img1.kiosk007.top/static/images/blog/ebpf_logo.png

ebpf_logo

Redis为什么这么快?

一提到 Redis ,首先的一个印象就是快!但是之前很少研究过Redis底层的一些实现。之前接触Redis比较少,有一个项目是做限流用到了 Redis,大致原理是记录最近访问过的IP和时间,如果下次再有请求到来匹配IP查找之前是否有过访问,如果有则判断时间差是否小于一小时,小于则禁掉,大于则更新时间戳,如果没有就是第一次访问。

实现一个Web服务-(一)

熟悉 Golang 的话就会知道,用官方提供的 net/http 标准库搭建一个 Web Server,是一件非常简单的事。既然 Golang 利用其精简的语法实现了 Web Server,那么是有必要知其然和知其所以然。最近看到很多文章都介绍了如何实现一个 Web ,那么今天做一个总结。

了解golang的defer

golang 中有一个关键字 defer ,golang 的 defer 语句用于延迟调用。defer 会在当前函数返回之前执行 defer 注册的函数。

在 defer 语句所在的函数退出之前调用。defer 可以代替其它语言中 try…catch… 语句,也可以用来处理释放资源等收尾操作,比如关闭文件句柄、关闭数据库连接等。defer 还能用于 panic 的 recovery。