zoukankan      html  css  js  c++  java
  • 关于缓存的一些问题!请大牛指点!

    现在给的模式是这样,在高并发的情况下,使用缓存减少对数据库的交互,从而提高速度。

        那就是在数据库中读取一些常用的数据作为缓存,放到相关的服务器中。用户操作的数据以缓存中的数据为主,数据库只作为辅助作用。

        问题:

        什么时候缓存数据:(答不上来)

        缓存一般存什么数据:存一些在特定的时间点不改变的,使用率高的数据

        存多久:看数据的类型而定,不怎么改变的or改变频率高的

        什么样的数据需要存入数据库中:(答不上来)

        缓存与数据库交互的时机:在缓存框架中使用监听器(满足你指定的条件,如缓存达到了多少G...)

        清理缓存的时机:定期对缓存中的数据进行采样,清理掉一些不常用的数据

        使用此模式的优缺点:

        优点:减少对数据库的交互,获取数据的速度快
        缺点:服务器宕机则缓存数据丢失-----------备份缓存数据则提高成本

        以上的问题,回答都是自己整理的,肯定有不足之处或者是错的地方,还有一些答不上来,希望知道的大牛能不吝赐教!谢谢!

    评论内容:

    评论1:

    如果系统并发量很大,并且数据库已经到了瓶颈了,可以考虑缓存。

    关于缓存存多久,应该跟业务逻辑结合,有些数据不经常变,可以存很长时间,有些相对来说变动频繁的,可以存时间短一些。

    而有些数据是不能缓存的,例如,用户支付信息,涉及到钱相关的,都不能缓存。

    如果使用Memcached或Redis的话,这种缓存系统是可以把数据定期缓存到文件系统,就算宕机重启,也可以一定程度上恢复之前的缓存数据。

     
    •  评论2:
       
      根据自己的构架对每一个分层的数据中,那些相对不会经常变动,或者可以允许变动有一定滞后性的数据,进行缓存,还要提供清除cache的接口,根据不同的业务提供不同的缓存时间。
    •  
       

      1. 收到请求,先查询缓存,查询不到,查询磁盘(MYSQL等数据库),查询出来,把数据放入缓存,便于下一次请求使用

      2. 缓存预热,对于比较变化小,查询量大的数据,可以服务启动前把数据先 load 到 cache,名为预热

      3. 对于 MC(memcached)尽量使用一致性 hash 算法,避免MC服务器down机,缓存大面积的失效。

      4. 使用缓存集群,缓存分布在多个服务器上,增加可用性

    •  
       
      我做过一次缓存,是仿照hibernate的,是按照SQL的解析和查出的值保存在缓存中的,用LRU算法,当出现更新,删除的操作时,就清空缓存。你说的存一些在特定的时间点不改变的,使用率高的数据,其实表达的是二级缓存,缓存也有一级和二级的区分。
  • 相关阅读:
    剑指offer-第五章优化时间和空间效率(从1到n的整数中1出现的次数)
    《需求工程--软件建模与分析》读书笔记05
    《需求工程--软件建模与分析》读书笔记04
    软件需求第二次课后作业
    2018年春季个人阅读计划
    软件需求与分析——大二下需会知识点
    《需求工程--软件建模与分析》读书笔记03
    《需求工程--软件建模与分析》读书笔记02
    《需求工程--软件建模与分析》读书笔记01
    学习过程总结及对教师授课给出的意见和建议
  • 原文地址:https://www.cnblogs.com/rainy-shurun/p/5403435.html
Copyright © 2011-2022 走看看