• 高志强
    2019-10-15
    老师,热点本地缓存使用组件 Guava Cache ,这个东西能存多大量呢,感觉像一个数据库,还有个问题一直困扰我,像股票之类的app页面数据时时刷新,这个是怎么做到的,是否用了缓存如何使用的缓存呢,希望老师能给解答,谢谢~

    作者回复: 1.guava cache本身没有限制,注意看存大量是否对gc有影响
    2. 股票的话,应该有分布式缓存,但是这个缓存更新频率高,需要用队列削峰填谷

     3
     4
  • 被过去推开
    2019-11-27
    方便面那个比喻好评。缓存和缓冲区对应的英语是cache和buffer,buffer的存在是为了解决数据不能一次性读写完成或某次的数据量太小,io成本又太高的折中方案

    作者回复: 谢谢~

     1
     2
  • 布小丫学编程
    2019-11-19
    感谢老师的分享,让我知道了Java中可以使用Guava cache和Ehcache实现缓存过期的,也是对HashMap的一种补充吧。
    有个问题问一下:缓存的命中率一般怎么统计的?有什么开源工具或者框架吗?

    作者回复: guava cache可以打印统计信息的

    
     2
  • 长期规划
    2019-10-24
    老师,我理解分布式缓区中,每个key只有一份,无备份,对于热点查询,key所在节点的压力大。热点本地缓存相当于key在每台应用服务器都有,分散了压力,对吗

    作者回复: 不是的 热点缓存在本地,没有网络交互,会支撑更高的并发

     2
     1
  • 小喵喵
    2019-10-14
    1.多个数据库节点,指的是多台数据库服务器,每台数据库服务器部署的同一个数据库,只是每个数据库存的数据不一样吗?
    2.缓存监控如何做呢?有什么业内第三方工具或者组件吗?

    作者回复: 1. 是的
    2. 缓存有stats工具,可以接入open-falcon

    
     1
  • Keep-Moving
    2019-10-14
    #### 缓存的分类
    * 静态缓存
    * 分布式缓存
    * 热点本地缓存

    #### 缓存的不足
    * 适用手读多写入的场景,并且数据最好有一定的热点属性
    * 缓存会使系统更复杂,并且带来数据不一致的风险
    * 缓存通常使用内存作为存储介质,但内存是有限的
    * 缓存会增加运维的成本
    展开

    作者回复: 👍

    
     1
  • 疯狂咸鱼
    2020-01-31
    老师您说的缓存挡在上层是,这里的上层下层是指?我记得网络分层应用层是最上层

    作者回复: 我们认为越靠近用户的 越是上层,比如nginx在应用的上层,缓存在数据库的上层

    
    
  • 疯狂咸鱼
    2020-01-31
    本地缓存是存在哪里?内存的告诉缓存中么?

    作者回复: 是的,存储在本机的内存里

    
    
  • 咻的一下
    2019-12-25
    涉及到排序分页的动态数据有没有什么好的缓存解决办法呢,比如外卖店铺首页,根据用户的配送距离进行排序分页显示,难道每个用户都缓存一份数据么,感觉缓存是不是不适用于这种场景

    作者回复: redis支持geohash,应该可以解决这个问题

    
    
  • Chiang
    2019-12-18
    CA->Netherlands->CA 是啥意思?

    作者回复: 额,好像没有这个。

    
    
  • 长期规划
    2019-12-17
    老师前面讲的池化也是一种缓存

    作者回复: 可以这么说吧~

    
    
  • yuan
    2019-11-26
    老师,如果写DB完了以后,服务挂了,没有更新缓存,那也也会造成不一致,这种不一致有方法避免吗? 难不成只能等缓存失效
     1
    
  • 乘坐Tornado的线程魔...
    2019-11-16
    对于下面这段话:

    由于本地缓存是部署在应用服务器中,而我们应用服务器通常会部署多台,当数据更新时,我们不能确定哪台服务器本地中了缓存,更新或者删除所有服务器的缓存不是一个好的选择,所以我们通常会等待缓存过期。因此,这种缓存的有效期很短,通常为分钟或者秒级别,以避免返回前端脏数据。

    数据更新是指的request请求将数据库里面的数据更新吗?每个请求过来时都会带着ip地址,就算是多台服务器负载均衡的话,应该是可以根据ip确定服务器的。为什么我们无法确定哪台服务器本地中了缓存呢?这个中了缓存是指?
    展开

    作者回复: 中了缓存是指命中了缓存

    
    
  • 大卫
    2019-11-05
    老师,当调用第三方接口时,该接口是分众的,会根据mac、uid等跟用户绑定的参数去查询数据,如果并发量非常高,全部穿透到第三方接口导致访问很慢,或者第三方直接限流了,影响调用方,如果限流,只能返回一个兜底数据,算是降级了。
    这样的场景该如何优化呢?

    作者回复: 可否依据uid做一层缓存?

     1
    
  • 星空123
    2019-11-04
    我们项目用的全局变量。没有引入老师说的‘热点本地缓存使用组件 Guava Cache’。我们去了解下然后在项目中使用、谢谢老师
    
    
  • helloworld
    2019-10-28
    接@饭团的疑问,当涉及到更新数据库时,如何保证数据库和缓存的一致性?通过在代码中加入逻辑判断或者是异常捕获从而确认当第一步更新成功后,再进行第二步?希望老师能给出稍微具体一点点的建议。感谢

    作者回复: 可以参考一下缓存的cache aside使用方式,或者保证最终一致性

    
    
  • 👽
    2019-10-17
    没有达到需要引用缓存需要的情况下,尽量不要过早使用缓存。
    缓存的坑很多,并且维护成本极高。在处理缓存的适合需要多考虑很多问题。
    曾经碰到这样的情况:
    调用别人写的查询服务,但是查找到的数据却迟迟无法更新为最新数据。最后,重新写了直接查库的接口,才解决问题。
    并且,缓存如果频繁更新,频繁失效 反而会带来性能的消耗。

    再带上杨晓峰老师的一句话:“过早的优化是万恶之源"
    展开

    作者回复: 是的

    
    
  • 岁寒
    2019-10-16
    redis简直是中小公司的开发利器~~
    
    
  • 龍
    2019-10-16
    下面这段话的hashmap 应该是memcache

    那么我们会在代码中使用一些本地缓存方案,如 HashMap,Guava Cache 或者是 Ehcache 等,它们和应用程序部署在同一个进程中,优势是不需要跨网络调度,速度极快,所以可以来阻挡短时间内的热点查询。

    作者回复: memcache不是部署在本地的,确实是hashmap,hashmap可以作为简单的本地缓存

    
    
  • longslee
    2019-10-15
    打卡。老师好,请问服务在运行期的时候,如何临时向本地缓存HashMap里添加热点数据呢?如何在JVM中拿到这个HashMap的句柄? MyBatis算不算带被动式缓存?
    踩过的坑:缓存一定要设置TTL,55555血与泪的控诉,曾经以为自己写的清理程序可以保证,结果有bug,果断时刻发现redis内存爆炸了。

    作者回复: 其实不用监控热点数据,可以监控命中率就好了

    
    
我们在线,来聊聊吧