Redis01- 基础篇

什么是Redis

        与MySQL数据存在磁盘上不同的是,Redis数据以k-v的键值对形式存在内存中,支持持久化。由于存在内存中,其读写速度很快。

Redis为什么那么快

        主要有三点:

  1. 基于内存,读写速度快
  2. IO多路复用、单线程读写
  3. 有高效的数据结构

分布式缓存常见的技术选型方案

        Memcached是分布式缓存刚兴起时常用的,现在基本上都用Redis进行分布式缓存,也有一些公司开发类似Redis的分布式缓存数据库。

Redis和Memcached的区别和共同点

共同点:

  1. 都是基于内存的数据库,一般都用作缓存使用
  2. 都有过期策略
  3. 两者的性能非常高

区别:

  1. Redis支持丰富的数据类型包括List、set、hash等,而Memcached只支持简单的数据类型
  2. Redis支持持久化,内存数据可存储到磁盘,主机重启后可恢复数据,而Memcached没有灾难恢复机制
  3. Redis有惰性删除和定期删除方式,而Memcached只有惰性删除
  4. Redis采用单线程IO多路复用,而Memcache是多线程,非阻塞IO复用
  5. Redis3.0之后就有原生的集群模式,而Memcached没有,需要靠客户端向集群分片中写数据

为什么要用Redis

  1. 速度快:Redis数据存在内存中,读写速度快,可以将一些高频访问的数据存在缓存中,这样速度可以提升几十倍
  2. 高并发:一般MySQL数据库的QPS(即每秒的请求数)为4k,由于Redis处理速度快,因此一部分数据库的数据可以放在缓存中,这样访问的速度提升,QPS可以达到5w+,10w+,这还是单个Redis,集群的更多,从而提升了系统整体的并发
  3. 功能全面: Redis除了用作缓存,还可以用于分布式锁、消息队列、限流、延时队列等       

常见的缓存读写策略

        最常见的是旁路缓存模式(Cache Aside Pattern),以db的结果为准

读:先在cache中读取,读不到就去数据库db中读取,之后db的数据更新到缓存中;

写:先更新数据库db,再删除缓存

        关于写的顺序的解释:如果是先删除缓存,再更新db,若有请求1写数据A,请求2读数据A,请求1先删除了缓存,请求2在缓存中找不到数据A,于是去db中读,然后请求1更新db,有可能导致数据不一致的情况;而先更新数据库db,再删除缓存,也有可能产生数据不一致,就是请求1从db中读数据A,此时缓存中不存在数据A,然后请求2往db里写数据A且缓存中无数据A故不用删除,而请求1更新缓存,因此导致数据不一致。但这种情况出现的概率极低,因为缓存写入的速度快,大多数情况请求1在请求2写数据之前就已经从db中读数据并写入缓存中了,此后请求2来的时候更新db中数据并把缓存中数据A删除,就不会出现数据不一致的情况。

【归根结底,写的顺序的决定性因素是因为缓存本身写的速度快】

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值