MENU

Redis

2024 年 10 月 17 日 • 访问: 227 次 • 云原生

Redis简介

Redis 是互联网技术领域中使用最广泛的存储中间件,它是 Remote Dictionary Service 三个单词中加粗字母的组合。

Redis 以超高的性能、完美的文档、简洁的源码著称,国内外很多大型互联网公司都在用,比如说阿里、腾讯、GitHub、Stack Overflow 等等。它的版本更新非常的快,功能也越来越强大,最初只是用来作为缓存数据库,现在已经可以用它来实现消息队列(对对对,RocketMQ 你别怕)了。

Redis(缓存)常用的三种读写策略你了解吗?

3种常用的缓存读写策略

  • 旁路缓存模式(Cache Aside Pattern):写模式下先入库,然后删除缓存;读模式下优先从缓存读,如果没命中从数据库中读,然后加入缓存中。结果以数据库为主,适合读场景比较多的场景,主要的使用模式。
  • 读写穿透模式(Read/Write Through Pattern):把缓存作为主要的数据存储。写模式下,先查缓存,缓存中不存在时更新数据库,如果缓存中存在则更新缓存,再由缓存更新到数据库;读模式下,优先从缓存中读,读不到从数据库读写入缓存中由缓存返回。
  • 异步缓存写入(Write Behind Pattern):与读写穿透模式类似,主要是由缓存服务来负责缓存和数据库的读写。读写穿透模式是同步更新 cache 和 db,而异步缓存写入则是只更新缓存,不直接更新db,而是改为异步批量的方式来更新db。

Redis支持哪些类型的数据?

Redis 5 种基本数据类型详解
Redis 3 种特殊数据类型详解

Redis中有五种基本类型,和三种特殊类型的数据结构

五种基本类型:

  • String(字符串):key是字符串,value可以是字符串、整数、浮点数
  • List(列表):一个双向链表,存的是字符串,可以从左侧和右侧入队和出队
  • Set(集合):元素不能重复的集合,存字符串
  • Hash(散列):存放键值对的哈希表,一个哈希表中存若干key-value的键值对,其中key是字符串,value可以是字符串、整数、浮点数
  • Zset(有序集合):集合的每个元素都有score,使得集合中的元素能够按 score 进行有序排列

三种特殊类型:

  • Bitmap (位图):Bitmap 存储的是连续的二进制数字(0 和 1),通过 Bitmap, 只需要一个 bit 位来表示某个元素对应的值或者状态,key 就是对应元素本身
  • HyperLogLog(基数统计):适用于数量量巨大(百万、千万级别以上)的计数场景,HyperLogLog利用数学原理,能够用极小的存储空间存放大量的元素,提供计数的能力
  • Geospatial (地理位置):Geospatial index(地理空间索引,简称 GEO) 主要用于存储地理位置信息,基于 Sorted Set 实现。通过 GEO 我们可以轻松实现两个位置距离的计算、获取指定位置附近的元素等功能

Redis的字符串类型使用的是C语言的字符串类型吗?

小林Coding:SDS

虽然 Redis 是用 C 语言写的,但是 Redis 并没有使用 C 的字符串表示,而是自己构建了一种 简单动态字符串(Simple Dynamic String,SDS)。相比于 C 的原生字符串,Redis 的 SDS 不光可以保存文本数据还可以保存二进制数据,并且获取字符串长度复杂度为 O(1)(C 字符串为 O(N)),除此之外,Redis 的 SDS API 是安全的,不会造成缓冲区溢出。

Redis的缓存雪崩、穿透、击穿

简单聊聊缓存雪崩、穿透、击穿

  • 缓存雪崩:即缓存同一时间大面积的失效,这个时候来了一大波请求,都怼到数据库上,最后数据库处理不过来崩了。

    • 给过期时间加个随机时间
    • 加互斥锁,但这个方案会导致吞吐量明显下降
    • 热点数据不设置过期
  • 缓存击穿:缓存击穿是指一个热点 key 过期或被删除后,导致线上原本能命中该热点 key 的请求,瞬间大量地打到数据库上,最终导致数据库被击垮。

    • 代码问题,该 review 的 review。热点数据到底要不要过期,什么时候过期要明确
    • 线上误操作的事情,该加强权限管理的加强
  • 缓存穿透:客户端请求缓存和数据库中不存在的数据,导致所有的请求都打到数据库上。如果请求很多,数据库依旧会挂得明明白白。

    • 做好参数校验,对于不合理的参数要及时 return 结束
    • 对于查不到数据的 key,也将其短暂缓存起来
    • 提供一个能迅速判断请求是否有效的拦截机制,比如布隆过滤器
最后编辑于: 2024 年 10 月 28 日
返回文章列表 打赏
本页链接的二维码
打赏二维码
添加新评论