前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java学习八股之Redis-持久化-淘汰机制-IO策略

java学习八股之Redis-持久化-淘汰机制-IO策略

作者头像
一只
发布2023-08-10 16:03:19
1760
发布2023-08-10 16:03:19
举报

欢迎评论区纠错和建议,祝大家伸手就是大厂offer~

六、Redis

1. redis为什么快

完全基于内存操作

数据结构简单,对数据操作简单

redis是单线程避免了上下文切换带来的性能问题,也不用考虑锁的问题

采用非阻塞的IO多路复用机制

edis不是完全多线程的,在核心的网络模型中是多线程的用来处理并发连接,但是数据的操作都是单线程。Redis坚持单线程是因为Redis的性能瓶颈是网络延迟而不是CPU,多线程对数据读取不会带来性能提升。

2. redis持久化机制

快照持久化RDB

redis的默认持久化机制,通过父进程fork一个子进程,子进程将redis的数据快照写入一个临时文件,等待持久化完毕后替换上一次的rdb文件。整个过程主进程不进行任何的io操作。持久化策略可以通过save配置单位时间内执行多少次操作触发持久化。所以RDB的优点是保证redis性能最大化,恢复速度数据较快,缺点是可能会丢失两次持久化之间的数据

追加持久化AOF

以日志形式记录每一次的写入和删除操作,策略有每秒同步、每次操作同步、不同步,优点是数据完整性高,缺点是运行效率低,恢复时间长

3. Redis如何实现key的过期删除?

定期删除 :Redis 每隔一段时间从设置过期时间的 key 集合中,随机抽取一些 key ,检查是否过期,如果已经过期做删除处理。

惰性删除 :Redis 在 key 被访问的时候检查 key 是否过期,如果过期则删除。

4. Redis数据类型应用场景

String:可以用来缓存json信息,可以用incr命令实现自增或自减的计数器

Hash:与String一样可以保存json信息

List:可以用来做消息队列,list的pop是原子性操作能一定程度保证线程安全

Set:可以做去重,比如一个用户只能参加一次活动 ;可以做交集求共友

SortSet :有序的。可以实现排行榜

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-08-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 欢迎评论区纠错和建议,祝大家伸手就是大厂offer~
  • 六、Redis
    • 1. redis为什么快
      • 2. redis持久化机制
        • 3. Redis如何实现key的过期删除?
          • 4. Redis数据类型应用场景
          相关产品与服务
          云数据库 Redis
          腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档