生产环境
未来在工作中会涉及到的几个环境:
- 办公环境(入职后,公司给你发个电脑)
- 开发环境
- 有的时候,开发环境和办公环境是一个(一般做前端和做客户端)
- 有的时候,开发环境是一个单独的服务器(一般做后端)
- 编译一次时间特别久,使用高性能的服务器,进行编译
- 有的程序一启动要消耗很多的 CPU 和内存资源,办公电脑难以支撑
- 有的程序比较依赖
Linux
,在其他环境下搭不起来
- 测试环境(测试工程师使用)
- 线上环境/生产环境
- 上面三个环境统称"线下环境",外界用户无法访问到的
- 线上环境则是外界用户可以访问到的
- 一旦生产环境上出现问题,一定会对用户的使用产生影响,就会直接影响到公司营收
Redis 文档
通过 redis-cli
客户端和 redis
服务器交互,涉及到很多 的 redis
命令(非常非常多)
- 掌握常用命令(多操作练习)
- 学会使用
Redis
的文档
最核心的两个命令 get 和 set
Redis
是按照键值对的方式存储数据的
get
:根据key
来取value
set
:把key
和value
存储进去
若想输入 Redis
命令,就先要进入 Redis
客户端
使用方法
redis
set key value
key
和 value
都必须是字符串(写数字也行,会把你的数字看成字符串)
redis
中的命令不区分大小写
redis
get key

get
直接输入key
就能得到value
- 如果当前
key
不存在,就会返回nil
(和null/NULL
是一个意思)
全局命令
定义
Redis 支持很多种数据结构。整体上来说,Redis 是键值对结构 ,key
固定就是字符串,value
实际上会有多种类型
- 字符串
- 哈希表
- 列表
- 集合
- 有序集合
操作上面不同的数据结构,就会有不同的命令。
而全局命令,就是可以搭配任意一个数据结构来使用的命令
keys------查询 key
用来查询当前服务器上匹配的 key
。
通过一些特殊符号(通配符)来描述 key
的模样,匹配上述模样的 key
就能被查询出来
- 就是帮助我们看一下,当前
Redis
上面有哪些key
语法:
redis
keys pattern
pattern
: 包含特殊符号的字符串。有的地方翻译成"样式"或者"模式"。存在的意义,是去描述另外的字符串长啥样的
pattern
比如,你找女朋友的要求是:
- 肤白
- 貌美
- 大长腿
那这些条件就是pattern
。又饿了这些条件之后,你就在你的追求者中进行遍历,看哪些符合这些条件,选出她们
?
:匹配任意一个 字符,hello
,hollo
,hxllo
...*
:匹配任意个 字符,heeeeelo
,hllo
...[ae]
:匹配指定 字符,hallo
和hello
[^e]
:匹配除了指定字符 的,hallo
,hgllo
...[a-b]
:匹配 a-b 这个范围的,hallo
,hbllo
注意事项:
keys
命令的时间复杂度是 O ( N ) O(N) O(N),所以,在生产环境上,一般都会禁止 使用 keys
命令,尤其是大杀器 keys *
- 生产环境上的
key
可能会非常多,而我们的Redis
是一个单线程服务器 - 就可能导致执行
key *
实际爱你非常长,就使Redis
服务器被阻塞了,无法给其他客户端提供服务
这样的后果可能是灾难性的
Redis
经常被用于做缓存 ,挡在MySQL
面前,替MySQL
负重前行。万一Redis
被一个keys *
阻塞住了,此时其他的查询Redis
操作就超时了,此时这些请求就会直接查询数据库,突然一大波请求过来了,MySQL
措手不及,就容易挂~- 整个系统就基本瘫痪了。
- 如果你要是没有及时发现,及时恢复的话,年终奖妥妥就没了,更有甚者工作就没了