美文网首页
复习下redis

复习下redis

作者: 小Ju | 来源:发表于2020-06-25 10:33 被阅读0次

    项目中的缓存是怎么用到的,为什么用?

    回想一下自己的项目中用到缓存的地方:购物车模块,cc直播模块,首页的课程分类列表等。至于为什么用,主要考虑到的是:
    1高性能,缓存查询速度比较快,有一些复杂查询比较耗时,将聚合的结果进行缓存。
    2.有些数据经常要查询,但是又是不需要怎么改变的(首页的课程分类列表)
    3.有一些数据只是暂时存在,不需要保存到数据库中
    4.高并发?还没有试过

    redis的单线程模型:

    redis里面有一个文件事件处理器是单线程的,采用的是非阻塞的IO多路复用的机制(将请求压到队列中),基于内存的操作。

    redis的缓存类型:

    string,set(去重),hash(对象),list,sorted set(排序)

    redis的过期策略:

    1.定时清除,设置过期时间。问题redis设置定时清除采用的是惰性删除,过期了并没有删除,要等到用户再次请求后才删除
    2.内存淘汰:内存过多的时候,可以自动删除一些数据可以自己定制自己的策略(最近查询比较少的数据allkeys-lru)

    redis高并发:

    1.集群
    2.可以将读写分离

    redis高可用:

    1.第一个想法就是搞集群 http://www.redis.cn/topics/cluster-tutorial.html
    2.单机(主从架构,有一台master主机接收用户的写操作,由主机再将数据同步到从机上)

    redis持久化机制:

    RDB和AOF:RDB是快照,全量保存(save(同步)和bgsave(触发条件异步)机制);AOF:增量保存,可以设置每次操作保存,也可以设置每秒保存。

    缓存的问题:

    1.怎么解决缓存数据和数据库的数据一致
    基本的数据库写和改操作后,进行缓存的更新
    2.缓存雪崩问题。(缓存挂了,请求走数据库了,就导致雪崩了)
    保证redis集群高可用(主从机制),也可以再搞一个本地缓存escache,配好降级操作(Hystrix)防止数据库卡导致全部系统雪崩。必须做好持久化,方便快速恢复。
    3.缓存穿透。(有人用缓存不存在的数据请求,数据和缓存都没有)
    如果数据没有数据就写一个空值(或者unknow)到缓存中

    相关文章

      网友评论

          本文标题:复习下redis

          本文链接:https://www.haomeiwen.com/subject/epojfktx.html