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)
用于消息队列和日志存储,支持消息的持久化和时间排序。