redis

redis的数据类型

string、hash、list、set

redis为什么这么快

  • redis是单线程,避免上下文切换、不用考虑锁的问题
  • 数据结构简单
  • 完全基于内存

    缓存穿透

    查询一个缓存中不存在的数据,需要访问数据库。大量请求直接访问数据库,造成穿透。
    解决:查询到结果后,不管结果是否为空,都写入缓存。可结合并发锁。

    缓存雪崩

    如果缓存集中在一段时间内失效,发生大量的缓存穿透,所有的查询都落在数据库上,造成了缓存雪崩。
    解决:在缓存的时候给过期时间加上一个随机值,这样就会大幅度的减少缓存在同一时间过期。

    持久化

    RDB:按照一定的时间周期策略把内存的数据以快照的形式保存到硬盘的二进制文件。
    AOF:Redis会将每一个收到的写命令都通过 Write 函数追加到文件最后,类似于 MySQL 的 binlog。
    相关阅读