缓存分为本地缓存和分布式缓存
本地缓存:缓存和服务在一个主机上
分布式缓存:缓存在单独的主机上,服务是分布式部署,实现负载均衡。
本地缓存一般用Spring cache
分布式缓存用redis
缓存一般为键值对结构,redis的k值必须是字符串,v值可以是字符串,hashmap,集合,有序集合,列表。
缓存内容和数据库需要设置缓存的数据同步,缓存一般操作:
1.创建缓存
2.修改缓存
3.删除缓存
缓存的优势:
1.查询速度快:放在内存中,并且数据结构为hashmap,查询速度极,增加服务器查询速率。
2.支持事务,所有的操作包括都是原子性的
3.为单进程单线程模式,避免传统数据库那样带来的高并发负载问题。
redis持久化:将缓存数据放到磁盘文件中
原因:如果redis不做持久化,redis服务器挂掉时,内存中的数据全部丢失,无法恢复,这时所有的查询操作都会跨越redis直接访问数据库,数据库在负载很大的情况下可能就会挂掉(缓存雪崩)。
持久化常见的两种方式:
**1.RDB:**将redis中的数据以二进制形式存储在磁盘中的.rdb文件中,redis中的数据每隔离一段时间就同步更新一次.rdb文件。
优点: 数据恢复的很快
缺点: 因为是时钟模式更新。rdb文件,可能会丢失数据。
**2.AOF:**将redis中的数据以操作指令的形式保存在.aof文件中,redis中的数据一旦更新,就同步更新.aof文件。
优点:数据不会丢失。
缺点:数据恢复的很慢,需要根据操作指令从数据库重新获取数据。
redis相比memcache有哪些优势:
1.redis的v数据类型更多
2.redis支持持久化
redis的是内存,为了防止内存溢出,采用淘汰机制:
1.淘汰设置了过期时间的数据中即将要过期的数据
2.采用随机数法,将数据的过期时间设置为随机数,这样就不会出现都不淘汰或者都淘汰的情况
redis应用场景:
1.缓存
2.分布式锁
3.购物车
等等