Redis在java web主要有两个应用场景
    存储缓存用的数据
    需要高速读写的场合

    1.存储缓存用的数据
    在日常对数据库的访问中,读操作的次数远超写操作,比例大概在1:9到3:7,所以需要读的可能性是比写的可能大得多的,当我们使用SQL语句去数据库进行读写操作时,数据库就会去磁盘把对应的数据索引取回来,这是一个相对较慢的过程
    如果放在Redis中,也就是放在内存中,让服务器直接读取内存中的数据,那么速度就会快很多,并且会极大减少数据库的压力,但是使用内存进行数据存储开销也是比较大的,限于成本的原因,一般我们只是使用Redis存储一些常用的奈何主要的数据,比如用户登陆信息等
    一般而言在使用Redis进行存储的时候,我们需要从以下几个方面来考虑
    1.业务诗句常用吗?使用率如何?
    如果使用率较低,就没必要写入缓存
    2.该业务是读操作多,还是写操作多?
    如果写操作多,频繁需要写入数据库,也没必要使用缓存
    3.业务数据大小如何
    如果要存储几百兆字节的文件,会给缓存带来很大的压力,这样也没必要
    从下图我们知道以下两点:
    当第一次读取数据的时候,读取Redis的数据就会失败,此时就会触发程序读取数据库,把数据读取出来,并写入Redis中
    当第二次以及以后需要读取数据时,就会直接读取Redis,读取数据后,就结束了流程,这样速度大大提高了
    从上面的分析可以知道,读操作的可能性是远大于写操作的,所以使用Redis来处理日常中需要经常读取的数据,速度提升是显而易见的,同时也降低了对数据库的依赖,使得数据库的压力大大减少
    Redis在JavaWeb中的应用 - 图1
    从流程可以看出,更新或者写入的操作,需要多个Redis的操作,如果业务数据写次数远大于读次数那么就没必要使用Redis

    2.高速读写场景
    在如今的互联网中,越来越多的存在高并发的情况,比如天猫双11,抢红包,抢演唱会门票等,这些场合都是在某一个瞬间或者是某一个短暂的时刻有成千上万的请求到达服务器,如果单纯的使用数据库来进行处理,就算不崩,也会很慢的,轻则造成用户体验极差用户量流水,重则数据库瘫痪,服务宕机,而这样的场合都是不允许的
    所以我们需要使用Redis来应对这样的高并发需求的场合
    Redis在JavaWeb中的应用 - 图2
    1.当一个请求到达服务器时,只是把业务数据在Redis上进行读写,而没有对数据库进行任何的操作,这样就能大大提高读写的速度,从而满足高速相应的需求
    2.但是这些缓存的数据仍然需要持久化,也就是存入数据库中,所以一个请求操作完Redis的读写之后,回去判断该高速读写的业务是否结束,这个判断通常会在秒杀商品为0,红包金额为0时成立,如果不成立,则不会操作数据库;如果成立,则触发事件将Redis的缓存的数据以批量的形式一次性写入数据库,从而完成持久化的工作