Hello,今天给各位童鞋们分享Redis缓存,赶紧拿出小本子记下来吧!
简介
什么是Redis?
Redis是一种存储系统,像MongoDB一样,都是键值对存储,也就是key-value结构。也就是说,Redis其实是一种数据库,它可以跨平台使用,本系列整合SpringBoot+Redis。
Redis本身是由C语言编写,是符合ANSIC标准的开源系统。Redis是RemoteDictionaryServer的缩写,现在常用于分布式数据库以及高可用缓存系统。实际上,学会Redis整合了SpringBoot后,再整合SpringCloud就是水到渠成了。
为什么要用Redis?
有朋友可能要问,既然Redis和MongoDB这么像,那我用后者不就行么,干嘛学前者?实际上MongoDB和Redis是有很大区别的,他们只是在存储方式上有相似点。下面列出二者的不同之处:
数据存储位置MongoDB存储的数据存放在磁盘,少部分数据存放在内存中。为啥数据库数据还要存放在内存呢?是因为数据库的缓存系统会判断热点数据,频繁存取的数据要放在内存达到高效处理。Redis的数据全部存放在内存,并定期写入磁盘,也因此造就了Redis的高性能。当内存不够用,Redis会利用LRU(LeastRecentlyUsed)算法取代数据,没错,就是操作系统西面置换算法。数据存储方式MongoDB利用了mmap函数,将文件数据映射的内存进行增删查改,修改完之后操作系统会将内存数据flush到磁盘。问题是二者并非一个事务,因此两个事务间宕机的话,数据自然丢失。Redis有两种存储模式,RDB与AOF模式,这个我们后面会说到。数据处理速度MongoDB比Redis慢,这也是Redis属于内存存储系统的最大优势。当然,我们暂时不考虑内存不够用的情况。除此之外,目前分布式是大厂主流技术栈,Redis是大厂会采用的分布式缓存方式。并且在应对高并发的场景上,比如阿里双十一,腾讯游戏新皮肤的出场或者过年红包等,利用Redis和消息队列是主流的方法。
入门是什么程度?精通是什么程度?
入门就是对Redis完全不了解,但是你要有基础的知识,比如基础的数据结构,基础的类型,基础的内存知识,基础的分布式知识,
基础的Java/Spring知识和linux的基本操作。这个大可放心,我水平也一般般,所以我说的基础一定是基础。
精通并不是说最后能自己写一个Redis,或者说自己能成为Redis的稳定开发维护者,我自己也做不到,所以这里的精通是能够了解Redis的各种机制、算法,了解Redis提供的常用方法,了解Redis使用场景,自己能排坑,并且能够自己整合SpringBoot框架。实际上,这个整合SpringBoot框架最简单,