前言
很多小伙伴对redis的学习 很零散,感觉学习了很久,但是有感觉不了解redis 是什么
在此给大家整理文章 见下
后期会 更新 redis 从搭建使用到底层源码解读的系列;欢迎大家点赞关注
redis是什么?
redis 是一款基于 内存的key-value数据库;
可以将数据持久化到磁盘
底层自我实现数据结构
支持事务
基于io多路复用模型
开源
使用ANSI C语言编写
单线程单进程
redis的优缺点
优点
- 速度快
- 支持的数据类型丰富
- 操作都是原子操作(单线程)
- 特性丰富
- 事务
- 发布/订阅
- lua脚本
- key自动过期
- LRU
- 持久化
- 主从复制
缺点
- 基于内存,及时有持久化策略,但是不能完全避免数据丢失风险
- 由于是单线程,高性能受限于单核CPU的处理能力
redis的常见使用场景
- 缓存“热点”(高频读,低频改)数据
- 计数器(点赞等)
- 排行榜
- 社交平台评论
- 共同好友
- 分布式锁
- 分布式session
- 限流
- 发布订阅
- 队列
- … …
redis支持的数据类型
基础数据类型
- strings
- hashes
- lists
- sets
- sorted set
高级类型
- bitmaps
- hyperloglogs
- geospatial indexes
- streams
redis为什么那么快
- 基于内存
- 数据结构简单 大多数的 查找操作O(1)
- 单线程,避免多线程的CPU竞争、上下文切换及锁的问题
- io多路复用模型
常见问题
- 缓存穿透
- 缓存击穿
- 缓存崩溃
- 数据不一致
- 并发竞争key问题
仅用于共同学习,欢迎大家 提出宝贵意见;
根据大家反馈,会不定期完善或回答大家问题