赞
踩
相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新!
⭐点赞⭐收藏⭐不迷路!⭐
Redis(Remote Dictionary Server)通常用于以下场景:
Redis 之所以快速,主要有以下几个方面的原因:
Redis 最初设计为单线程的主要原因是为了简化实现和提高性能。单线程模型避免了多线程之间的线程切换开销和锁竞争,同时利用了操作系统的非阻塞 I/O 多路复用机制,提高了处理请求的效率。
在 Redis 6.0 中引入了多线程支持,主要是为了充分利用多核处理器的性能。但是这并不意味着 Redis 的设计变成了多线程。多线程模型在某些场景下可能会提高并发能力,但也增加了复杂性和风险,比如线程间的同步与通信、锁竞争等问题。因此,Redis 6.0 仍然采用了单线程和多进程的混合模型,其中单线程处理网络 I/O 和协议解析,而后端任务通过多个线程执行,这样既保留了单线程模型的优势,又能充分利用多核处理器的性能。
Redis 支持多种数据类型,每种数据类型都有不同的特点和用途。常见的数据类型包括:
Redis 中的跳表(Skip List)是一种有序数据结构,可以用来实现有序集合(Sorted Set)。跳表通过在原始链表的基础上添加多层索引,以提高查找效率。
跳表的实现主要包括以下几个步骤:
跳表的时间复杂度为 O(log n),与平衡二叉树的性能相当,但实现起来比较简单,并且不需要像平衡二叉树那样复杂的平衡操作。
Redis 的哈希表(Hash)是一种类似于字典的数据结构,可以存储多个键值对,每个键值对都是一个字段和对应的值。Redis 的哈希表支持以下操作:
哈希表在 Redis 中的内部实现使用了类似于字典的结构,具体来说,它使用了哈希表和链表相结合的方式来实现,其中哈希表用于快速查找字段,链表用于解决哈希冲突。在 Redis 中,哈希表的扩容操作采用了渐进式 rehash 策略,即在扩容过程中仍然可以对哈希表进行读写操作,减少了扩容过程的阻塞时间。
是的,Redis 支持事务。Redis 的事务通过 MULTI、EXEC、WATCH、DISCARD 等命令实现。在事务中,客户端可以将多个命令组合在一起,然后一次性发送给 Redis 服务器执行。Redis 在执行事务期间会将命令序列化,保证事务的原子性。如果在 EXEC 执行之前,有被 WATCH 监控的键发生了变化,那么事务将被打断。
Redis 的过期策略主要有两种:
当内存不足时,Redis 可以通过一些策略来淘汰部分数据以释放内存,常见的内存淘汰策略包括:
开源项目地址:https://gitee.com/falle22222n-leaves/vue_-book-manage-system
前后端总计已经 1300+ Star,2W+ 访问!
⭐点赞⭐收藏⭐不迷路!⭐
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。