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. 布隆过滤器
posted @ 2018-12-16 22:00  种树人(tree-planter)  阅读(142)  评论(0编辑  收藏  举报