一、Redis 到底是啥?
简单说,Redis 就是一个运行在电脑内存里的"超级快"的仓库。
-
快:因为它不读写硬盘,直接在内存里操作数据。每秒能读11万次,写8万次,比传统数据库快太多了。
-
不丢:虽然它在内存里工作,但它有个本事,可以按照你设置的规则,自动把数据保存到硬盘上。就算电脑关机了,下次开机还能把数据找回来。
-
能干很多活:它不只能存简单的"名字-值",还能存列表、集合、有序集合、哈希表,功能很强大。
一句话总结:Redis 就是一个快如闪电、还能自动备份的内存版超级仓库。
二、它跟传统数据库(比如MySQL)有啥不一样?
你可以把 MySQL 想象成一个文件柜,里面有好多抽屉(表),每个抽屉里又有很多文件夹(行),规规矩矩的。找东西虽然稳,但得翻来翻去,速度一般。
把 Redis 想象成一个快递架,每件快递都贴了个标签(key),你只要知道标签,就能"嗖"一下拿到东西(value),根本不用翻。
| 对比项 | MySQL(文件柜) | Redis(快递架) |
|---|---|---|
| 存东西的方式 | 规规矩矩的表格,一行一列 | 贴个标签,随手一放 |
| 扩展方式 | 慢了就换更快的机器(向上堆) | 慢了就多加几个货架(向外扩) |
| 擅长的事 | 保证数据绝对准确,比如银行转账 | 追求极致的速度,比如看网页、刷排名 |
三、Redis 为什么能跑得这么快?
主要有三个原因:
-
纯内存干活:它直接在内存里操作,不像MySQL还得去硬盘里找。内存比硬盘快几百倍。
-
一个人专心干活:Redis的核心是单线程的。就像一个人同时只做一件事,不用分心,也不用跟别人抢工具,效率反而高。
-
"一夫当关"的门卫 :它用一种叫
I/O多路复用的技术,一个门卫就能同时接待成千上万个请求,忙而不乱。
四、Redis 都能存什么类型的数据?(重点!)
这是面试必问的,记住这五种"容器"就行:
-
String(字符串) :最简单的,就是"键-值"。比如存
name = "张三"。啥都能存,数字、一段话都行。 -
List(列表) :像一串糖葫芦,有顺序,可以左边加,右边取。最适合做消息队列,比如"先来先服务"。
-
Set(集合) :像一个麻袋,里面东西都是独一无二的,没有顺序。最适合做去重,比如统计今天有哪些独立访客。
-
Hash(哈希) :像一个小型的Redis。可以存一个对象的多个属性。比如存一个用户:
user:100里面有name,age,city。很适合存对象。 -
Zset(有序集合) :是Set的升级版,每个元素都有个"分数",按分数排序。最适合做排行榜,比如游戏积分榜、热门文章排名。
五、Redis 适合干什么活?(实际应用)
-
缓存(最常用):比如网站首页的广告、商品详情。数据量大、不怎么变,放Redis里,用户访问"嗖"一下就出来了,不用每次都去数据库查。
-
排行榜 :用
Zset轻松搞定,比如B站热门视频、微博热搜。 -
计数器 :用
INCR命令,比如统计文章阅读量、直播点赞数。 -
最新N条数据 :用
List的LPUSH+LTRIM,比如展示最新的10条评论。 -
消息队列 :用
List实现简单的消息系统,处理异步任务。
不适合干的事: 银行转账这种一分钱都不能错的、需要复杂SQL查询的。
六、怎么操作Redis?(最常用的几个命令)
记住这几个,日常用就够了:
-
放数据 :
set key value(比如:set name "小明") -
拿数据 :
get key(比如:get name) -
看所有key :
keys *(千万别在生产环境用!会卡死) -
设置过期时间 :
expire key 秒数(比如:expire name 10,10秒后自动删除) -
看还有几秒过期 :
ttl key(返回-1表示永不过期,-2表示已经没了) -
删数据 :
del key -
切换数据库 :
select 数字(Redis默认有0到15共16个库) -
清空当前库 :
flushdb(慎用!) -
清空所有库 :
flushall(非常慎用!)
七、一些坑和注意事项(面试加分项)
-
keys * 别乱用 :数据量一大,这个命令会让Redis卡死。线上查数据用
SCAN命令代替。 -
设置密码 :生产环境一定要设置密码(
requirepass),别把Redis裸奔在公网上。 -
不用root跑 :为了安全,创建一个普通用户(比如
redis)来运行它。 -
合理设置过期时间 :所有缓存的数据都要有
expire,不然内存会被撑爆。 -
持久化要配置好:根据数据重要性,配置好RDB(快照)和AOF(日志),防止丢数据。
最后,用一句话总结Redis:
Redis 就是一个快得离谱、还能自动备份、能干很多巧活儿的内存数据库,是现在互联网项目里解决高并发、提升访问速度的标配神器。