Redis底层原理

1、Redis是什么

Redis是一个开源的、内存中的数据结构存储系统,它支持多种类型的数据结构,如字符串(strings)、哈希表(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)等。Redis还提供了事务、持久化、复制等功能。

2、Redis的基本工作原理

1.内存存储

       Redis将所有数据存储在内存中,这使得读写操作非常快。为了保持数据的持久性,Redis提供了RDB(Redis Database)和AOF(Append Only File)两种持久化机制。 

2.单线程模型

        Redis基于Reactor模式使用了一个单线程的event loop来处理客户端的请求。这意味着所有的命令都是顺序执行的,这避免了多线程环境中常见的上下文切换和竞态条件等问题,从而简化了设计并提高了性能。

3.网络IO多路复用

        Redis使用IO多路复用来处理多个客户端的连接。这通常通过epoll(在Linux上)、kqueue(在BSD系统中)或select/poll(在其他系统上)等系统调用来实现。这种方式可以有效地管理大量的并发连接。

4.命令执行

        当接收到客户端的命令请求时,Redis会查找相应的命令实现,然后执行该命令。命令执行的结果会被返回给客户端。

3、Redis的持久化机制

1.RDB持久化

        RDB是Redis数据的一个时间点快照。Redis会定期将内存中的数据写入磁盘文件。这种机制适用于灾难恢复,但不适合数据备份频繁的场景。

2.AOF持久化

        AOF记录了Redis服务器接收到的每个写操作(例如SET和LPUSH),以追加的方式写入文件。服务器重启时,可以通过重新执行AOF文件中的命令来重建数据集。AOF持久化更适合数据完整性要求高的场景。

4、Redis 数据类型

1.字符串(String)

 基本的数据存储单元,可以存储字符串、整数或者浮点数。

2.列表(List)

一个简单的列表,可以存储一系列的字符串元素。

3.集合(Set)

一个无序集合,可以存储不重复的字符串元素。

4.有序集合(Sorted Set)

 类似于集合,但是每个元素都有一个分数(score)与之关联。

5.哈希(Hash)

一个键值对集合,可以存储多个字段。

6.位图(Bitmaps)

基于字符串类型,可以对每个位进行操作。

7.超日志(HyperLogLogs)

用于基数统计,可以估算集合中的唯一元素数量。

8.流(Streams)

用于消息队列和日志存储,支持消息的持久化和时间排序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

滴滴答答哒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值