Redis5设计与源码分析读后感(一)认识Redis
一、初识redis
定义
Redis是一个开源的Key-Value数据库,通常被称为数据结构服务器,其值可以是多种常见的数据格式,且读写性能极高,且所有操作都是原子性的。
高性能的主要原因
- 1、基于内存存储,命令几乎都是操作内存,内存的读写速度非常快。
- 2、单线程处理网络请求,避免不必要的上下文切换,同时不存在加锁/释放锁等同步操作。【PS:正在运行的redis server肯定不止一个线程,但只有一个线程来处理网络请求】
- 3、使用多路I/O复用模型(select、poll、epoll),可以高效处理大量并发连接。
- 4、数据结构专门设计,CRUD操作相对简单。
二、安装Redis
由于我们使用redis的场景一般是安装在服务器上的,所以这里以linux环境为例子进行安装:
#1、下载源码包 wget http://download.redis.io/releases/redis-5.0.0.tar.gz #2、解压源码包 tar -zxvf redis-5.0.0.tar.gz #3、进入安装目录 cd redis-5.0.0 #4、编译【从Makefile中读取指令,然后编译】 make #5、进入源码目录 cd src #6、安装【从Makefile中读取指令,然后安装到指定的位置】 make install
安装完成后进入/usr/local/bin目录中可以看到生成了一些可执行文件:
- redis-benchmark:官方自带的redis性能测试工具
- redis-check-aof:修复语法错误的AOF文件
- redis-check-rdb:修复语法错误的RDB文件
- redis-cli:客户端命令行工具【redis-cli -h {host} -p {port} 链接到指定的redis服务器】
- redis-sentinel:哨兵启动程序
- redis-server:服务端启动程序
配置redis
安装完成后,redis默认是本机连接的形式,外网无法访问,我们需要改一下配置文件:
修改完文件以后我们直接输入以下命令重启Redis服务器:
#使用对应的配置文件来启动Redis服务器【这里我们是进入了src目录里面去执行redis-server,而不是直接使用安装好以后在/usr/local/bin目录下的快捷命令】 #PS:../redis.conf表示使用此配置文件进行启动 #PS:&表示后台启动,跳出后不关闭程序 redis-server ../redis.conf &
三、Redis源码结构
redis源码主要放在安装目录下的src目录里面:
核心部分如下:
(1)基本数据结构
- 动态字符串 :sds.c
- 整数集合 :intset.c
- 压缩列表 :ziplist.c
- 快速链表 :quicklist.c
- 字典 :dict.c
- Streams :底层实现结构为listpack.c和rax.c
(2)Redis数据类型的底层实现
- redis对象 :object.c
- 字符串 : t_string.c
- 列表 :t_list.c
- 字典 :t_hash.c
- 集合及有序集合 :t_set.c 和 t_zset.c
- 数据流 :t_stream.c
(3)Redis数据库的实现
- 数据库的底层实现 :db.c
- 持久化 :rdb.c 和 aof.c
(4)Redis服务端和客户端实现
- 事件驱动 :ae.c 和 ae_epoll.c
- 网络连接 :anet.c 和 networking.c
- 服务端程序 :server.c
- 客户端程序 :redis-cli.c
(5)其它
- 主从复制 :replication.c
- 哨兵 :sentinel.c
- 集群 :cluster.c
- 其他数据结构 :hyperloglog.c 、 geo.c 等
- 其他功能 :pub/sub 【发布/订阅】、 Lua脚本等
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律