Redis入门
Redis概念
Redis和MongoDB这两个是内存数据库,而MySQL是存储在磁盘的持久层数据库。随着MySQL的磁盘IO速度成为数据库的瓶颈,这个时候可以开一个Redis数据库,在内存做直接的IO操作,进行IO操作时直接在内存进行,当系统处于空闲时,再将数据写入MySQL中,增加整体的数据IO效率。
NoSQL技术
Redis一种基于内存的数据库,并且提供一定的持久化功能。Redis和MongoDB是当前使用最广泛的NoSQL,而就Redis技术而言,它的性能十分优越,可以支持每秒十几万次的读/写操作,其性能远超数据库,并且还支持集群、分布式、主从同步等配置,原则上可以无限扩展,让更多的数据存储在内存中,更让人欣慰的是它还支持一定的事务能力,这保证了高并发的场景下数据的安全和一致性。
Redis 在 Java Web 中的应用
Redis在Java Web主要有两个应用场景
- 存储缓存用的数据
- 需要高速读/写的场合使用它进行快速读/写
缓存场景
在日常对数据库的访问中,读操作的次数远超写操作,需要读的可能性是比写的可能大得多的。当我们使用SQL语句去数据库进行读写操作时,数据库就会去磁盘把对应的数据索引取回来,这是一个相对较慢的过程。如果我们把数据放在 Redis 中,也就是直接放在内存之中,让服务端直接去读取内存中的数据,那么这样速度明显就会快上不少,并且会极大减小数据库的压力,但是使用内存进行数据存储开销也是比较大的,限于成本的原因,一般我们只是使用 Redis 存储一些常用和主要的数据,比如用户登录的信息等。
高速读/写场景
在如今的互联网中,越来越多的存在高并发的情况,比如天猫双11、抢红包、抢演唱会门票等,这些场合都是在某一个瞬间或者是某一个短暂的时刻有成千上万的请求到达服务器,如果单纯的使用数据库来进行处理,就算不崩,也会很慢的,轻则造成用户体验极差用户量流失,重则数据库瘫痪,服务宕机,而这样的场合都是不允许的!
Redis持久化
持久化的功能:Redis的是内存数据库,数据都是存储在内存中,为了避免进程退出导致数据的永久丢失,需要定期将Redis的中的数据以某种形式(数据或命令)从内存保存到硬盘;当下次Redis的重启时,利用持久化文件实现数据恢复。除此之外,为了进行灾难备份,可以将持久化文件拷贝到一个远程位置。
Redis的持久化分为RDB持久化和AOF持久化:前者将当前数据保存到硬盘,后者则是将每次执行的写命令保存到硬盘(类似于MySQL的二进制日志的);由于AOF持久化的实时性更好,即当进程意外退出时丢失的数据更少,因此AOF是目前主流的持久化方式,不过RDB持久化仍然有其用武之地。
实际使用时的环境配置和具体操作demo
见参考资料中的“Redis【入门】就这一篇!”,有较为详细的教程。
SpringBoot整合Redis进行缓存数据库查询
见参考资料中的“SpringBoot整合Redis进行缓存数据库查询”,有较为详细的教程。
Redis可视化管理工具
Redis Desktop Manager是一款能够可视化Redis管理的工具,收费软件,自己去网上下载。
参考资料