Redis学习总结

Posted moguxiong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis学习总结相关的知识,希望对你有一定的参考价值。

Redis

简介

Redis全名是Remote Dictionary Server,使用ANSI C语言编写,属于NoSQL数据库。Redis可用作分布式缓存、分布式锁。Redis是内存数据库,也可以持久化。

数据类型

数据模型是key-value,key只能是String,value支持多种类型:String、List、Set、Sort Set、Hash、Bitmap、HyperLogLog。

特点

  • Redis支持数据的持久化,重启的时候可以再次加载进行使用;
  • Redis的value支持多种类型,适用于更广泛的应用场景;
  • Redis支持数据的备份,即Master-Slave模式;
  • Redis主进程是单线程工作,所有操作是原子性的,多个操作支持事务;
  • Redis的性能优越,读速度达到110000次/s,写速度达到81000次/s,key和value的大小限制均为512M;
  • 还支持Publish/Subcribe、通知、key老化逐出等特性。

持久化机制

有两种方式,在redis.conf中配置

  • RDB快照,默认方式。

    save 300 10:在300秒之后,如果至少有10个key发生变化,就触发BGSAVE命令创建快照
  • AOF(Append-Only File),实时性更好。

    appendonly yes:开启
    
    三种AOF持久化方式:
    
    appendfsync always:每次数据修改都写
    
    appdenfsync everysec:每秒写一次(推荐)
    
    appendfsync no:让操作系统决定何时写

老化机制

Redis支持设置key的过期时间,对过期的key删除方式:

  • 定期删除,周期100ms,随机抽取设置过期时间的key
  • 惰性删除,查询key时删除

如果定期删除漏掉了很多过期key,也没查询这些key,就不会删除。Redis支持配置最大内存,当内存不够用时,通过数据淘汰策略删除,支持以下6种淘汰策略:

  • volatile-lru
  • volatile-ttl
  • volatile-random
  • allkeys-lru
  • allkeys-random
  • no-enviction 默认

使用缓存常见的问题

  • 缓存被穿透

    解决方法:

    1. 缓存空值,设置过期时间不超过5分钟
    2. 布隆过滤器

以上是关于Redis学习总结的主要内容,如果未能解决你的问题,请参考以下文章

《Redis设计与实现》(16-21)个人学习总结

博学谷学习记录超强总结,用心分享 | SpringCache常用注解介绍+集成redis

Redis实现分布式锁(设计模式应用实战)

Redis实现分布式锁(设计模式应用实战)

Redis核心技术与实战:学习总结目录

Redis学习总结