博主简介👨🏼⚕️:国内某一线互联网公司Java工程师👨🏼💻,业余自媒体创作者💻,CSDN博客专家🏆,Java领域优质创作者📕,华为云享专家🥇,华为HDZ核心成员👨💼,曾发表并出版ISEAE信息科学国际论文,全网累计发表技术博客60余万字📒,公众号【码猿编程日记】作者,坚信每一次敲动键盘都能让生活变得更智能,世界变得更有趣!
课前答疑:很多小伙伴问我零基础或者根本没有使用过Redis,可以学习嘛?当然是可以的!充分考虑到小伙伴们的学习程度有所不同,所以本次课程的所有操作都是在Windows环境下进行的,不会依赖太多的环境配置,且上手容易。已经学习过Redis的小伙伴们同样可以再学习一遍,温故而知新,还能拿CSDN定制周边!何乐而不为呢😀?
在前六天的课程中,我们一起学习了如何安装Redis、认识Redis、Redis常用命令、五大数据类型、三大特殊数据类型、以及如何在Java中实操等等内容,最后还讲了如何在实际的springboot开发中使用Redis来进行配置集成。学习到这里,你应该对Redis会有一个全新的认识了吧?
到今天,我们七天玩转Redis课程就马上结束了,学以致用,那么学会了Redis,在找工作时会有哪些面试官爱问的问题呢?Redis之后更加深入的学习路线又是怎样的?最后让我们来一探究竟吧!
Redis 就是一个使用 C 语言开发的数据库,不过与传统数据库不同的是 Redis 的数据是存在内存中的 ,也就是说它是内存数据库,所以读写速度非常快,因此 Redis 被广泛应用于缓存方向。
另外,Redis 除了做缓存之外,也经常用来做分布式锁,消息队列。
Redis 提供了五种数据类型和三大特殊数据类型来支持不同的业务场景。Redis 还支持事务 、持久化、Lua 脚本、多种集群方案。
优点:
缺点:
因为避免了线程切换的资源消耗,并且单线程不存在资源共享与竞争,不用考虑锁的问题。同时是基于内存的,内存的读写速度非常快,使用非阻塞的IO多路复用机制,数据存储进行了压缩优化 使用了高性能数据结构,如hash、跳表等
Redis 通过一个叫做过期字典(可以看作是 hash 表)来保存数据过期的时间。过期字典的键指向 Redis 数据库中的某个 key(键),过期字典的值是一个 long long 类型的整数,这个整数保存了 key 所指向的数据库键的过期时间(毫秒精度的 UNIX 时间戳)。
watch指令在redis事物中提供了CAS的行为。为了检测被watch的keys在是否有多个clients同时改变引起冲突,这些keys将会被监控。如果至少有一个被监控的key在执行exec命令前被修改,整个事物将会回滚,不执行任何动作,从而保证原子性操作,并且执行exec会得到null的回复。
1、RDB:数据集快照的方式半持久化模式,记录数据库的所有键值对,在某个时间点将数据写入临时文件,持久化结束后,用这个临时文件替换上次持久化的文件,可恢复数据。 优点:
缺点:
2、AOF:指所有的命令记录以redis命令请求协议的格式完全持久化存储,保存为aof文件 优点:
缺点:
主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master/leader),后者称为从节点(slave/follower);数据的复制是单向的,只能由主节点到从节点。Master以写为主,Slave以读为主。
默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。
缓存雪崩,是指在某一个时间段,缓存集中过期失效。Redis宕机!
缓存穿透的概念很简单,用户想要查询一个数据,发现redis内存数据库没有,也就是缓存没有命中,于是向持久层数据库查询。发现也没有,于是本次查询失败。当用户很多的时候,缓存都没有命中,于是都去请求了持久层数据库。这会给持久层数据库造成很大的压力,这时候就相当于出现了缓存穿透。
兄弟们注意啦!这里需要注意和缓存穿透的区别,缓存击穿,是指一个key非常热点,在不停的扛着大并发,大并发集中对这一个点进行访问,当这个key在失效的瞬间,持续的大并发就穿破缓存,直接请求数据库,就像在一个屏障上凿开了一个洞。
当某个key在过期的瞬间,有大量的请求并发访问,这类数据一般是热点数据,由于缓存过期,会同时访问数据库来查询最新数据,并且回写缓存,会导使数据库瞬间压力过大。
兄弟们,截止到今天,七天玩转Redis的课程就结束啦!这七天的时间,我们学习了Redis的五大数据类型(string、list、hash、set、zset)和三大特殊数据类型(Gaospatial地理位置、Hyperloglog基数统计、Bitmap位图场景)的基本命令和使用,在这一点上,你已经超过了很多只会string类型操作Redis的同学。之后,我们还学习了如何通过Redis来实现事务操作,对数据的监听以及乐观锁的实现,考虑到同学们的基础不一,后面没有讲解分布式锁,但是之后也会继续更新!
在学习完Redis命令行操作时候,我们对Redis在Java中进行了实操,Redis在实际的开发中更多的还是用在spring系列的框架上,所以学习Java的小伙伴应该知道什么才是重要的了吧?同时我们还讲了在实际的企业项目开发中,如何应对开发的自定义RedisTemplate,以及修改Redis的配置文件。之后如果有用到,肯定能秀一波啦!
学以致用,最后在这篇文章上我们总结了Redis的常见面试题,充分帮助大家应对Redis的常见面试问题。最后兄弟们也是一路过关斩将,杀到了最后一天!!!
七天玩转Redis课程的学习,其实只是Redis能够应对简单企业项目开发的一些操作,如果在面对业务比较复杂的项目开发的时候,Redis需要学习的东西还有很多,比如架构、哨兵模式、集群、缓存及雪崩等等,
Redis的学习之路也仅仅不会仅限于此,在现在大数据和高用户的情景下,Redis的应用也会变得更加的复杂。我把Redis完整的学习路线给大家列了一个框架,大家可以按照学习,我之后也会慢慢的更新Redis之后的内容。欢迎大家加入社区或者关注我的博客学习!
今天需要学习的内容主要就是掌握Redis的高频面试题,了解Redis之后的学习路线,Redis的学习之路漫漫,今天是一个结束也是一个新的开始!
感谢这七天在一起学习的所有小伙伴们!也感谢你们为了提出的建议和指正!Redis的内容我会继续更新,欢迎大家持续关注!💖💖💖