阶段一:非关系型数据库Redis基础
背景描述及其方案设计
业务背景描述
时间:2021.9.-2022.6
发布产品类型:互联网动态站点 商城
用户数量: 60000(用户量猛增)
PV : 200000-300000(24小时访问次数总和)
DAU: 20000(每日活跃用户数)
模拟运维设计方案
根据以上业务需求,准备加入Redis缓存中间件服务器,可以使用到redis更加丰富的功能
在商城业务中实现:
① 实现活跃用户数的统计(使用set集合)
② session存储到redis
③ openresty(nginx+lua)动态限制IP访问waf(web application firewalld)
Redis概述
什么是Redis
Nosql 非关系数据库 key => value 键值对
Redis是Remote Dictionary Server(远程数据服务)的缩写
由意大利人 antirez(Salvatore Sanfilippo萨尔瓦托桑菲利波) 开发的一款 内存高速缓存数据库
该软件使用C语言编写,它的数据模型为 key-value
它支持丰富的数据结构,比如 string list(双向链表) hash(哈希) set(集合) sorted set(zset有序集合)
可持久化(保存数据到磁盘中),保证了数据安全
业务使用场合
① [Sort Set]排行榜应用,取top n操作,例如sina微博热门话题(取最热的前10个话题)
② [List]获得最新N个数据 或 某个分类的最新数据
③ [String]计数器应用
④ [Set]sns(social network site)获得共同好友
⑤ [Set]防攻击系统(ip判断)黑白名单等等
安装与配置Redis
官方网址:https://redis.io/
github: https://github.com/antirez/redis
安装方式
可以通过yum方式在线安装,也可以通过源码编译方式安装
这里,采用源码编译方式安装:
第一步:找到对应的安装包资源,使用wget命令下载,这里安装的7.4.0版本。
安装包资源地址:https://download.redis.io/releases/
第二步:上传Redis到Linux系统中
wget https://download.redis.io/releases/redis-7.4.0.tar.gz
第二步:配置=>编译=>安装
tar -zxvf redis-7.4.0.tar.gz
cd redis-7.4.0
make
make PREFIX=/usr/local/redis install命令作用:
- 访问
https://download.redis.io/releases/redis-7.4.0.tar.gz;curl默认把响应写到终端,wget默认下载到文件。可据 HTTP 状态、响应内容或下载结果判断服务是否可访问。
- 按选项打包或解包归档文件;
-c表示创建归档,-x表示解包,-f后面指定归档文件名。
执行结果:
- 成功后目标文件会下载到当前目录或
-O指定的位置。
- 成功后会生成归档文件或把归档内容解压到目标目录;用
tar -tf 归档文件可查看归档内容。
关键参数:
注意事项:
测试结果:查看dump.rdb文件大小的变化

不会触发,仍使用上一次的快照文件。
**总结**

这个操作是子进程在后台完成的,这就允许父进程同时还可以修改数据。

可以通过lastsave命令获取最后一次成功的执行快照时间。
运行效果:

获取一个看不懂的时间戳,需要转换一下
比如

默认:yes

默认:yes。对于存储到磁盘中的快照,可以进行压缩存储。
如果是的话,redis会采用LZF算法进行压缩。
如果你不想消耗CPU来进行压缩的话,可以设置为关闭此功能。

默认:yes
在存储快照后,还可以让redis使用CRC64算法来进行数据校验。
但是这样做会增加大约10%的性能消耗,如果希望获取到最大的性能提升,可以关闭此功能。

**注意事项:**

它**不记录数据快照**,而是记录所有**写操作**命令(读操作不记录),就像数据库的“操作日志”。
**核心特点:**

| **步骤** | **详解** |
|---|---|
| ①命令接收 | 客户端发送的写操作(如 SET name "redis")先到达 Redis 服务端。 |
| ②缓存写入 | 命令不会直接写入磁盘,而是先存入 AOF 缓冲区(内存区域),避免频繁磁盘 I/O。 |
| ③策略同步 | AOF缓冲会根据AOF缓冲区 **同步文件的三种写回策略** 将命令写入磁盘上的AOF文件。 |
| ④文件优化 | 随着 AOF 文件变大,Redis 会根据规则进行命令的合并( **又称AOF重写** ),从而起到AOF文件压缩的目的。 |
| **⑤重启恢复** | **Redis 重启时,读取 AOF 文件 并 按顺序执行所有写命令,重建原始数据集。** |
注意事项:

三种写回策略小结:


...
...
1426 1428 1432
**注意事项:**
添加一些数据,查看测试结果

**注意事项:**


**核心价值:**

**翻译如下:**


简单来说:

**概括:**
| 编号 | IP | Redis版本 | 角色 |
|---|---|---|---|
准备redis02,需要提前安装Redis
修改配置文件redis.conf
或者通过主节点把编译好的同步过来,在mysql01服务器上面执行同步文件
#过量使用内存设置为0!在低内存环境下,后台保存可能失败注意事项:
**注意事项:**重启redis服务,在slave服务器测试密码是否可用
或者
**注意事项:**命令说明:
源码安装LNMP,要参考下面的代码,手工编译安装redis.so扩展
第一步:安装redis.so扩展
https://pecl.php.net/package/redis
**注意事项:**
缓存设计:减少Web对MySQL的访问,减轻数据库压力
与之前session存储到file文件的方式不同,将session存储到redis中,可以实现session的共享以及单点登录(sso)的操作。
www.baidu.com
pan.baidu.com
image.baidu.com
music.baidu.com
Another-Redis-Desktop-Manager软件
双击安装即可
使用Another-Redis-Desktop-Manager连接Redis服务器(88.111)
注意事项:
], ], ], ];
https://doc.thinkphp.cn/v6_1/Session.html注意事项:
<?php // | 会话设置
];
#安装依赖注意事项:
--释放连接(连接池实现)
red:set_timeout(1000)
close_redis(red)
**命令拆解:**
| 命令部分 | 重要程度 | 详细解释 |
|---|---|---|
| `-p` | 【核心】 | 递归创建目录;父目录不存在时一并创建,目录已经存在也不报错。 |
**注意事项:**
}
}
#
}
#
#}
#
#}
#
#}
}
#
#}
#
#}
}
bin/openresty注意事项:
或者修改/usr/local/openresty/nginx/conf/nginx.conf端口
} } 启动服务
**注意事项:**
修改配置文件,
#ip_hash;
}
}
}
}
}
#主配置文件修改
#修改lua脚本访问频率
--释放连接(连接池实现)
red:set_timeout(1000)
close_redis(red)
启动服务注意事项:
本文由飞书云文档同步生成。涉及命令、SQL、配置示例时,请以飞书源文档和实际环境执行结果为准。