REDIS是什么意思:缓存数据库,提速工具

REDIS是什么意思,它是一款开源的内存型键值数据库,数据优先存放内存中,读写速度明显高于磁盘数据库,支持字符串、哈希、列表等多种数据结构,可用来做热点数据缓存、分布式锁、消息队列、计数器,适合并发访问量较高的Web后端、小程序服务;它不适合存储超大体量、极少访问且不能丢失的持久化业务数据,这类场景优先选用MySQL这类磁盘数据库。

REDIS核心存储机制

REDIS默认把数据放在内存,内存读写延迟通常在微秒级别,磁盘数据库读写一般是毫秒级别,这就是它提速的核心原因。内存断电会丢失数据,REDIS自带RDB和AOF两种持久化方案,RDB定时生成全量快照文件,AOF持续记录每一条写入命令,你可以搭配开启,降低数据丢失概率。持久化只是兜底方案,不要把REDIS当成主库承担核心业务数据存储。

键值是它最基础的组织形式,每一条数据由唯一key和value组成,value不再局限普通字符串。

REDIS支持的数据结构

  • String:字符串,用于验证码、简单计数、配置信息
  • Hash:哈希表,适合存放用户资料、商品基础属性
  • List:列表,支持左右插入读取,可做简单消息队列
  • Set:集合,自动去重,用于标签、好友交集计算
  • SortedSet:有序集合,自带分数排序,用来做排行榜

REDIS常见部署模式对比

部署模式适用场景运维成本扩容能力
单机开发测试、低并发小项目低弱
主从复制读写分离,提升读请求承载量中等一般
哨兵模式需要自动故障转移,保证可用中等一般
集群大数据量、高并发生产环境较高强

单机REDIS节点故障之后服务直接中断,生产环境很少直接单机上线,测试环境使用单机可以节省资源,快速验证缓存逻辑。

REDIS典型业务用法

热点数据缓存是使用最多的场景,商品详情页、首页推荐内容这类频繁查询、改动频率低的数据,第一次查询写入REDIS,后续请求直接读取缓存,减少MySQL查询压力。分布式锁依靠REDIS原子命令实现,多个服务实例争抢同一个资源时,只有拿到锁的实例执行任务,降低并发冲突。限流功能利用过期key计数,限制单个IP或者账号单位时间内请求次数,保护后端接口不被突增流量打垮。

控制过期时间。

REDIS使用的硬性边界

REDIS内存容量受服务器物理内存限制,单节点内存占满之后会触发淘汰策略,默认淘汰最近最少使用的key,你可以在配置文件修改淘汰规则。它不适合存储冷数据,冷数据长期占用内存,会挤占热点缓存空间,拖慢整体缓存命中率。它的事务支持比较弱,无法像关系型数据库一样提供强一致性事务,资金交易这类强一致性场景,不能只依靠REDIS完成校验。

缓存穿透、缓存击穿、缓存雪崩是开发时高频遇到的三类问题,缓存穿透指查询不存在的数据绕过缓存直达数据库,你可以缓存空值或者布隆过滤器拦截;缓存击穿是热点key过期瞬间大量请求打到数据库,给热点key设置永不过期或者互斥锁;缓存雪崩是大量key同一时间过期,批量请求压垮数据库,设置过期时间增加随机偏移量就能缓解。

选择REDIS,优先看并发读压力。

敬慕百科汇集百科知识与游戏文化,带你发现世界的每一个精彩角落。

想要了解更多关于REDIS是什么意思的文章欢迎访问:百科