第09章 缓存和Redis
第9章 缓存和Redis
一、为什么缓存
常见的一个问题是:数据库里面有buffer、ORM映射里面也有buffer作为缓冲区,那为什么要缓存呢?
上面说的这两个缓存都不是你可以控制的,完全取决于他们自身,我们开发者管不了
而使用redis,我就可以自己的控制缓存,非常好
数据库里面的数据是表格,表格的对象经过ORM映射拿了过来好不容易转化为java对象,我为什么不把他存起来呢?这样还可以节省开销
上面说的是数据库,假如我还有从文件系统里面读取的,nosql数据库里面的读取的东西、动态生成的网页、图片都可以 ,所以使用redis就都可以存储,redis完全在开发者的控制下。比如甚至双十一的时候,我可以趁用户访问量少的时候提前把可能卖爆的网页缓存出来,这样提高访问的速度
redis甚至还可以作为消息中间件,类似kafka的topic,他和卡夫卡的差别是redis里面的东西在内存里面
数据库服务器对于内存要求比较高,而Tomcat服务器主要是CPU密集型,对于一些只读的数据,我从数据库拿到之后就缓存在本地,这样就可以更快的拿得到!
二、一致性哈希
- 把hash的结果作为一个0-很大的数字,这些数字成环分布
- 假想服务器放在这个这个环里面的几个节点,0代表环的开始,当计算的结果为0-服务器1的值的时候,放在服务器1,服务器1-服务器2的值的时候放在服务器2,这样围一个环
- 假如要在服务器1和2之间,添加一个服务器1.5,那么原先计算的结果在服务器1-服务器1.5之间的数据就要迁移到服务器1.5上面,剩下的数据保持不变
三、redis
- nosql数据库,内存型数据库
- 可以有主从备份、集群化部署,
- 什么东西放缓存:按照上课讲的,那就是:
- 经常用到的东西
- 经常涉及到读取操作的,而很少涉及到写的操作的
- 中间计算的结果
- 经常要写的东西不要放入缓存
四、分布式缓存
- 为什么需要分布式缓存:因为一个机器的缓存可能不够,物理上多个机器,实际逻辑上是一个大的缓存,可以充分利用多个机器的内存
- 稳定可以备份,可靠性增加