Redis基础

Redis基础

Redis (Remote Dictionary Server) 是一个基于C语言开发的NoSQL数据库,是一个内存数据库,支持持久化,因此读写速度非常快,原生支持集群部署。

Redis为什么这么快呢?

  1. 内存数据库,所有请求完全基于内存,读写速度非常快,访问级别是纳秒级,相对于硬盘数据库的毫秒级,性能要更好
  2. 高效I/O模型,Redis实现了I/O多路复用模型,基于单线程事件循环监听多个I/O请求
  3. 单线程模型,虽然是单线程,但单次请求速度非常快,避免了线程上下文切换和锁竞争,结合I/O多路复用模型性能很高
  4. 内存数据结构经过极致优化,以在性能和空间效率之间取得最佳平衡
    image

既然Redis支持持久化,为什么不当作主数据库呢?

  • Redis为内存数据库,内存的成本很高
  • 虽然支持持久化,但是仍然有数据丢失的风险,所以不适合作为主数据库

本地缓存 vs 分布式缓存

维度 本地缓存 分布式缓存
数据一致性 多服务器部署难以维护数据一致性 最终一致性
内存限制 受限于本机内存 独立部署,可横向扩展
数据丢失风险 服务器宕机数据丢失 支持持久化,不易丢失
性能 相对较低,存在网络传输延迟
管理维护 缓存分散,难以维护 独立部署,集中管理
图示 image image

缓存本质上属于空间换时间的思想,但是缓存不是银弹,分布式缓存的引入增加了系统复杂度,需要保证缓存的高可用

本地内存适合缓存只读数据,比如商品详情之类的只读数据

Redis事务

MULTI+EXEC+DISCARD

Redis事务和传统数据的事务不太一样,不满足ACID,更像是将一组命令打包,这组命令执行期间不会被打断,满足隔离性,但是失败不会回滚,不满足原子性

MULTI
> OK
SET PROJECT "String"
> QUEUED
GET PROJECT
> QUEUED
EXEC
> OK

LUA脚本(推荐)

LUA脚本相对来说使用更多,相对于MULTI来说,具有以下优势

  • 命令执行失败后,后续命令不再执行,而MULTI会继续执行后续命令
  • 网络传输更加高效,所有命令一次性传输,而MULTI是每添加一条命令就立即传输

两种事务原理都是在执行过程中不会被其他命令打断,从而保证原子性

两种事务机制性能对比

待补充

posted @ 2025-11-13 00:06  xxs不是小学生  阅读(2)  评论(0)    收藏  举报