Redis基础知识

特点:

  • 方便扩餐-数据之间没有关系

  • 大数据量高性能8w/s 写11w/s读

  • 数据多样性 不需要事先设计数据库

  • RDBMS与NoSQL

基础知识

  • 16个数据库,默认使用的是第0个

  • 五大数据类型String 、list、 set、 hash、zset

  • 事务

    • Redis单条命令保存保证原子性,但是事务是不保证原子性

    • Redis没有事务隔离的概念:所有命令在发起执行的时候才会执行

    • Redis事务:开启事务(multi)》命令入队》执行事务(exec)

  • 乐观锁watch相当于MySQL里面的version

  • Jedis采用的是直连的方式,多个线程的操作不安全,避免的话采用的是池化技术

  • Redis数据使用的是内存中,因此广泛应用在缓存里面

  • 使用当作缓存的原因:类比一下操作系统里面的局部性原理

  • 使用Redis不用本地的Map的原理:Map属于本地缓存,生命周期伴随着JVM存在,多个实例情况下,使用Redis分布式缓存,可以的实现缓存的一致性。

  • Redis线程模型:内部使用的是文件事件处理器(file event handler),单线程,通过IO多路复用机制实现同时监听多个Socket,根据Socket上事件来选择对应的事件处理器进行处理。

    文件事件处理器包括四个部分:

    • 多个socket
    • IO多路复用程序
    • 文件事件分派器
    • 事件处理器

    多个socket可能会并发产生不同的操作,每个操作对应不同的文件事件,IO多路复用程序会将监听多个socket,将socket产生的事件放在队列中,事件分派器将队列中取出一个时间,将该事件交给相应的事件处理器进行处理。

  • redis与memmcached的区别

    1. redis支持更加丰富的数据类型,除去一般的kv,还有set、map,zset、hash等,Memecached支持简单的数据类型与string
    2. redis支持数据的持久化,可以将内存中的数据保存在的磁盘中,重启以后可以进行加载;memecached不行
    3. 集群模式:redis支持原生的cluster模型,memecached没有原生的集群模式,需要依靠客户端实现集群分片
    4. memecached是多线程,NIO复用的网络模型;redis是单线程多路IO复用模型
  • redis过期时间

    • redis支持的设置时间过期的机制
    • redis对于过期时间的进行删除的主要方法:定期删除+惰性删除
  • 为了保证redis作为缓存数据库,保存都是热点数据, 需要进行内存淘汰——六种淘汰机制

    • volatile-lru :从已经设置过期时间的数据集里面选取最少使用
    • volatile-ttl:从已经设置过期时间的数据集里面选取要过期的
    • volatile-random:从已经设置过期时间的数据集里面选取任意数据
    • allkeys-lru:内存不足,在key空间里面使用LRU
    • allkeys-random:从数据里面选择任意数数量淘汰
    • no-eviction:禁止驱逐数据
  • 持久化机制

    • 快照机制(RDB):根据时间点创建副本
    • 只追加文件(AOF):每执行一个操作就把相应的数据写入硬盘
  • 缓存穿透与缓存雪崩

    • 穿透:大量请求的key不存在于缓存中,导致请求直接数据库上,没有经过缓存

    • 雪崩:缓存同一时间大面积失效,导致请求落在数据库上,数据库

    • 解决方案:

      穿透

      1. 缓存无效key:redis里面设置一个查不到的key就写进去,设置一个过期时间
      2. 布隆过滤器:在缓存之上设置一层布隆过滤器,将可能搜索的key全部保存在里面。

      雪崩

      1. redis高可用
      2. 限流降低:缓存失效以后,使用加锁或者队列控制读数据库写缓存的线程数量:如果可以只允许一个线程查寻其他等待
      3. 数据预热:在正式部署之前,可能的数据全部加载到缓存里面。在即将发生大并发前手动加载触发,使缓存失效尽量均匀。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值