redis简述(redis的原理和使用场景)

  本篇文章为你整理了redis简述(redis的原理和使用场景)的详细内容,包含有redis的 redis的原理和使用场景 redis详细讲解 简单介绍一下redis redis简述,希望能帮助你了解 redis简述。

  redis是什么?

  Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
 

  redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。
 

  这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。

  redis的优点:

  1、本质上是一个 Key-Value 类型的内存数据库,很像memcached

  2、整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据 flush 到硬盘上进行保存

  3、因为是纯内存操作,Redis 的性能非常出色,每秒可以处理超过 10 万次读写操作,是已知性能最快的Key-Value DB

  4、Redis最大的魅力是支持保存多种数据结构(string,list,set,hash,sortedset),此外单个 value 的最大限制是 1GB,不像memcached只能保存 1MB 的数据

  5、Redis也可以对存入的 Key-Value 设置 expire 时间,因此也可以被当作一个功能加强版的memcached 来用

  1、Redis 的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此 Redis 适合的场景主要局限在较小数据量的高性能操作和运算上。

  Redis默认支持16个数据库,

  可以通过配置databases来修改这一数字。客户端与Redis建立连接后会自动选择0号数据库,不过可以随时使用select命令更换数据库。

  Redis支持多个数据库,并且每个数据库是隔离的不能共享,并且基于单机才有,如果是集群就没有数据库的概念
 

  端口:6379

  缓存穿透:

  概述:指查询一个一定不存在的数据,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到 DB 去查询,可能导致 DB 挂掉。(redis查询不到数据库,出现很多非正常的url访问---黑客攻击)

  现象:应用服务器压力变大, redis命中率降低 ,一直都是在查询数据库

  解决方案:

  1、查询返回的数据为空,仍把这个空结果进行缓存,但过期时间会比较短

  2、布隆过滤器:将所有可能存在的数据哈希到一个足够大的 bitmap 中,一个一定不存在的数据会被这个 bitmap 拦截掉,从而避免了对DB的查询

  3、设置可访问的白名单

  4、进行实时的监控

  缓存击穿:

  概述:对于设置了过期时间的key,缓存在某个时间点过期的时候,恰好这时间点对这个Key有大量的并发请求过来,这些请求发现缓存过期一般都会从后端 DB 加载数据并回设到缓存,这个时候大并发的请求可能会瞬间把 DB 压垮。(redis的某个key过期了,并大量访问这个key)

  现象:数据库访问瞬时增加, redis里面没有出现大量key过期 , redis正常运行

  解决方案:

  1、使用互斥锁:当缓存失效时,不立即去load db,先使用如 Redis 的 setnx 去设置一个互斥锁,当操作成功返回时再进行 load db的操作并回设缓存,否则重试get缓存的方法

  2、永远不过期:不要对这个key设置过期时间

  3、预先设置热门的数据

  缓存雪崩:

  概述:设置缓存时采用了相同的过期时间,导致缓存在某一时刻同时失效,请求全部转发到DB,DB 瞬时压力过重雪崩。与缓存击穿的区别:雪崩是很多key,击穿是某一个key缓存。(大量的key同时过期)

  现象:数据库的压力变大服务器崩溃 --雪崩效应对底层的系统冲击非常大

  解决方案:

  1.构建多级架构(nginx缓存+ redis缓存 + 其它的缓存)
 

  2.使用锁或者队列(避免大量的线程堆数据库进行一次性读写)
 

  3.设置过期标志,更新缓存
 

  4.将缓存失效时间分散开,比如可以在原有的失效时间基础上增加一个随机值,比如1-5分钟随机,这样每一个缓存的过期时间的重复率就会降低,就很难引发集体失效的事件。

  以上就是redis简述(redis的原理和使用场景)的详细内容,想要了解更多 redis简述的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: