1.redis缓存数据流程
2.redis支持的数据类型及适用场景
string
商品详情、首页三级分类 、短信验证码 、订单锁库存信息 、登录之后的token
list
热门评论内容
hash
购物车
set
去重场景
zset
排行榜
bitmaps
底层是位运算的字符串,存储0、1。可用来平替布隆过滤器来解决缓存穿透问题,且支持删除操作
hyperloglog
统计网站pv、uv等信息,统计大数据量信息
3.redis 是单线程为什么快 ?
redis是完全基于内存的,其采用多路复用和非阻塞IO,主要瓶颈在于网络和磁盘IO而不是CPU。
另一方面redis采用单线程,避免了线程切换和同步的开销,也提高了性能。
4.是否支持事务? redis操作是否是原子操作?
🌟Redis 支持事务。Redis 的事务是通过 MULTI/EXEC 命令来实现的。
可以使用 MULTI 命令来开始一个事务,然后在事务中执行多个命令,最后通过 EXEC 命令来执行这些命令并将结果返回。
事务可以保证在执行期间不会被其他客户端的命令所打断
🌟Redis 的操作是原子的,Redis 中的每个命令都是原子执行的,要么全部执行成功,要么全部失败,中间不会被其他命令所影响。
但是要注意的是,在使用 Redis 事务时,事务中的多个命令并不保证原子性,只有在执行 EXEC 命令后才会被作为一个原子操作来执行。
多路复用
指Redis 使用单个线程来同时处理多个客户端请求。通过使用 I/O 多路复用模型(如 epoll、kqueue 等)来监听多个文件描述符(包括网络连
接),并在有事件发生时进行处理。这样可以避免为每个连接创建一个线程或进程的开销,大大提高了连接的承载能力
非阻塞IO
指在进行网络读写操作时,不需要等待操作完成才返回结果,而是立即返回状态,可以进行其他操作。Redis 使用非阻塞方式进行网络读写,当请求
到达时,它会立即返回结果,无需等待数据发送或接收完成。这样使得 Redis 可以处理多个请求,并充分利用 CPU 的时间,避免在 I/O 操作上的等待。
5.说一下redis的hahs槽
Redis哈希槽是Redis集群的核心概念之一。在Redis集群中,数据会被分布在不同的节点上,而哈希槽则是用来划分数据所在节点的逻辑单位。哈希槽的数量是固
定的,Redis默认将其划分为16384个槽位。
当一个新的节点加入Redis集群时,集群会将部分哈希槽从已有节点上迁移至新节点上,直到集群中所有节点的哈希槽数量都比较平均。当有数据需要存储时,
Redis会根据数据的键值对应的哈希值,将其映射到一个哈希槽中,并根据哈希槽的分布情况,将数据存储到相应的节点上。
哈希槽的使用使得Redis集群可以更加高效地进行数据存储和访问,同时还能够实现数据的分布式存储和负载均衡。
6.redis过期策略是什么?
Redis 使用了惰性删除(lazy expiration)和定期删除(定时任务)两种过期策略来处理过期的键值对
惰性删除
当一个键被访问时,Redis 会先检查该键是否过期,如果过期则会删除,否则正常返回值。这种策略保证了数据在被访问时才会被删除,避免了无效数据的占
用。但是,由于是在访问时才判断是否过期,可能会导致过期键在一段时间内仍然保存在内存中。
定期删除
Redis 会定期地随机抽样一部分键,并检查它们是否过期,如果过期则删除。定期删除使用的是被动的方式,可能会导致大量的过期键堆积在内存中,直到进
行下一次定期删除才会清除。
7..redis内存淘汰机制是什么
Redis 默认使用的是 LRU (Least Recently Used)算法来进行内存淘汰。
选择最近最少使用的键进行淘汰,保留最常用的键。这样可以保证常用的数据仍然在内存中,提高访问速度
Redis 还提供了其他的内存淘汰策略,如 LFU(Least Frequently Used,最不经常使用)和随机策略
————————————————
版权声明:本文为CSDN博主「NIIMP」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_45643467/article/details/132693056