Redis各个数据类型的使用场景,redis数据类型及应用场景( 三 )


缓存的刷新会比较复杂,通常是修改完数据库之后,还需要对Redis中的数据进行操作;代码很简单,但是需要保证这两步为同一事务,或最终的事务一致性 。高速读写常见的就是计数器,比如一篇文章的阅读量,不可能每一次阅读就在数据库里面update一次 。高并发的场景很适合使用Redis,比如双11秒杀,库存一共就一千件,到了秒杀的时间,通常会在极为短暂的时间内,有数万级的请求达到服务器,如果使用数据库的话,很可能在这一瞬间造成数据库的崩溃,所以通常会使用Redis(秒杀的场景会比较复杂,Redis只是其中之一,例如如果请求超过某个数量的时候,多余的请求就会被限流) 。
这种高并发的场景,是当请求达到服务器的时候,直接在Redis上读写,请求不会访问到数据库;程序会在合适的时间,比如一千件库存都被秒杀,再将数据批量写到数据库中 。所以通常来说,在必要的时候引入Redis,可以减少MySQL(或其他)数据库的压力,两者不是替代的关系 。我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注 。
Redis缓存是针对于业务数据缓存还是对数据库数据缓存?

Redis各个数据类型的使用场景,redis数据类型及应用场景


不应该问Redis缓存的是业务数据还是数据库数据,可以问Redis是属于业务层还是数据层,这样问比较合理 。我觉得Redis属于数据层;首先我们先看一个概念 。DAOdata access object:数据访问对象主要用来封装对数据的访问,注意,是对数据的访问,不是对数据库的访问 。其实你的数据可以在数据库,在文件中,还是在Redis中,都可以通过DAO层访问 。
所以我把Redis看成和数据库是同一个级别的 。Mybatis的二级缓存我们使用Redis的时候,很多时候都是通过代码操作Redis,比如使用用Jedis,其实还有一个简单的办法,就是使用Redis做Mybatis的二级缓存,只需要做简单的配置和极少量的代码即可 。我们之前做的一个项目,会有大量的数据需要频繁被查询,很少(几乎没有)做新增修改删除的操作,这种数据很适合使用Redis进行缓存,所以新的版本想把Redis引入进来 。
引入所需要的jar包:增加配置文件实现org.apache.ibatis.cache.Cache接口mybatis-config.xml开启二级缓存:

推荐阅读