当前位置: 首页 > wzjs >正文

用vs做web网站时下拉框百度网盘电话人工服务

用vs做web网站时下拉框,百度网盘电话人工服务,自助无人售货机,wordpress无法设置主页探索 Redis 缓存对系统性能的提升——项目启动与操作指南 一、项目简介 Redis是一款高性能的键值存储数据库,以其出色的读写速度和丰富的数据结构著称,被广泛用作应用系统的缓存层。作为缓存,Redis通过将热点数据存储在内存中,显…

探索 Redis 缓存对系统性能的提升——项目启动与操作指南

一、项目简介

Redis是一款高性能的键值存储数据库,以其出色的读写速度和丰富的数据结构著称,被广泛用作应用系统的缓存层。作为缓存,Redis通过将热点数据存储在内存中,显著降低数据库负载,提升响应速度,尤其适用于高并发场景。它支持字符串、哈希、列表等多种数据类型,可灵活应对不同业务需求,并提供了过期机制、持久化选项及集群部署能力,确保数据可靠性与扩展性。结合LRU淘汰策略,Redis能自动管理内存,避免溢出。此外,其原子操作和发布订阅功能进一步扩展了缓存之外的实时数据处理场景。无论是会话缓存、页面缓存还是数据库查询加速,Redis都能通过毫秒级访问大幅优化系统性能,是现代化架构中不可或缺的缓存解决方案。

在这个项目中,我们将探索 Redis 缓存对系统性能的提升作用。项目使用 Gin 框架搭建后端服务,结合 MySQL 数据库和 Redis 缓存,同时提供了一个前端仪表盘用于监控系统状态和进行压力测试。

项目地址:https://gitee.com/mbjdot/go_redis
博客地址:https://blog.tmdog114514.icu

二、项目启动步骤
1. 环境准备

确保你已经安装了 DockerDocker Compose。如果还未安装,可以参考 Docker 官方文档 进行安装。

2. 启动项目
  • 打开终端,进入项目目录。

请添加图片描述

  • 执行以下命令启动项目:
docker-compose up -d --build

这个命令会构建项目所需的 Docker 镜像,并在后台启动 MySQL、Redis 和应用服务。--build 选项会确保重新构建镜像,以包含最新的代码更改。

3. 验证项目启动

等待一段时间后,打开浏览器访问 http://localhost:8080,如果看到“数据库与系统监控仪表盘”页面,说明项目已经成功启动。

请添加图片描述

三、核心代码描述
// 用户信息处理函数
func getUserHandler(c *gin.Context) {id := c.Param("id")// 记录开始时间用于计算性能start := time.Now()//优先从Redis获取user, err := getUserFromCache(id)if err == nil {// 缓存命中atomic.AddUint64(&redisHits, 1)c.JSON(http.StatusOK, user)return}// 缓存未命中atomic.AddUint64(&redisMisses, 1)// 查询数据库atomic.AddUint64(&dbQueryCount, 1)user, err = getUserFromDB(id)// 计算查询耗时,记录慢查询elapsed := time.Since(start)if elapsed > 100*time.Millisecond {atomic.AddUint64(&slowQueryCount, 1)log.Printf("慢查询警告: 获取用户ID=%s 耗时: %v", id, elapsed)}if err != nil {atomic.AddUint64(&dbErrorCount, 1)if err == sql.ErrNoRows {c.JSON(http.StatusNotFound, gin.H{"error": "user not found"})return}c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})return}// 将结果写入Redis(异步)go setUserToCache(user)c.JSON(http.StatusOK, user)
}

该函数的主要功能是处理用户信息获取请求,优先从 Redis 缓存中获取用户信息,如果缓存未命中,则从数据库中查询,并将查询结果异步写入 Redis 缓存。同时,代码还会记录缓存命中、缓存未命中、数据库查询次数、慢查询次数和数据库错误次数等指标。

// 从数据库获取用户信息
func getUserFromDB(userID string) (*User, error) {query := `SELECT id, name, email FROM users WHERE id = ?`switch rand.Intn(100) {case 0: // 1%概率触发锁等待超时time.Sleep(1500 * time.Millisecond)return nil, &mysql.MySQLError{Number: 1205, Message: "Lock wait timeout"}case 1, 2: // 2%概率触发高负载延迟time.Sleep(time.Duration(300+rand.Intn(700)) * time.Millisecond) // 300-1000msdefault: // 正常情况base := 15 + rand.Intn(25) // 15-40ms基础延迟time.Sleep(time.Duration(base) * time.Millisecond)}start := time.Now()row := db.QueryRow(query, userID)var user Usererr := row.Scan(&user.ID, &user.Name, &user.Email)// 记录数据库操作耗时elapsed := time.Since(start)if elapsed > 100*time.Millisecond {log.Printf("MySQL慢查询: 获取用户ID=%s 耗时: %v", userID, elapsed)}if err != nil {if err != sql.ErrNoRows {log.Printf("数据库查询错误: %v", err)}return nil, err}return &user, nil
}

我模拟了查新数据库所带来的高负载延迟与触发锁等待超时

四、项目操作指南
1. 系统监控

打开浏览器访问 http://localhost:8080,你会看到系统监控仪表盘。仪表盘会显示 Redis 和 MySQL 的状态、缓存命中率、数据库连接数等信息。你可以通过选择不同的刷新间隔,或者点击“刷新数据”按钮来更新页面数据。

请添加图片描述

2. 压力测试

在仪表盘的“压力测试”部分,你可以进行压力测试。输入测试的持续时间、并发数和测试端点,然后点击“开始测试”按钮,系统会开始进行压力测试。在测试过程中,你可以点击“停止测试”按钮来停止测试。测试结束后,系统会显示测试结果,包括总请求数、成功请求数、平均响应时间等指标。

请添加图片描述

我们发现30s的测试每秒请求次数达到了16212次,性能非常强悍。

我们直接修改代码

// 用户信息处理函数
func getUserHandler(c *gin.Context) {id := c.Param("id")// 记录开始时间用于计算性能start := time.Now()优先从Redis获取//user, err := getUserFromCache(id)//if err == nil {//	// 缓存命中//	atomic.AddUint64(&redisHits, 1)//	c.JSON(http.StatusOK, user)//	return//}// 缓存未命中atomic.AddUint64(&redisMisses, 1)// 查询数据库atomic.AddUint64(&dbQueryCount, 1)user, err := getUserFromDB(id)// 计算查询耗时,记录慢查询elapsed := time.Since(start)if elapsed > 100*time.Millisecond {atomic.AddUint64(&slowQueryCount, 1)log.Printf("慢查询警告: 获取用户ID=%s 耗时: %v", id, elapsed)}if err != nil {atomic.AddUint64(&dbErrorCount, 1)if err == sql.ErrNoRows {c.JSON(http.StatusNotFound, gin.H{"error": "user not found"})return}c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})return}// 将结果写入Redis(异步)//go setUserToCache(user)c.JSON(http.StatusOK, user)
}

注释掉redis相关逻辑

重新部署,先关闭卸载容器docker-compose down -v ,重新构建docker-compose up -d --build

进入仪表盘并测试

请添加图片描述

发现30s测试只能请求27407次,性能大幅降低

五、总结

通过启动和操作这个项目,我们可以直观地看到 Redis 缓存对系统性能的提升作用。在后续的博客中,我们将深入分析项目的代码,探讨 Redis 缓存的实现原理和优化策略。

http://www.dtcms.com/wzjs/414324.html

相关文章:

  • 国内做外贸的网站青岛做网络推广的公司有哪些
  • 做付费软件网站怎么做燃灯seo
  • 手机网站推广法java培训机构
  • 做展会怎么引流到自己的网站谷歌搜索引擎为什么打不开
  • 网站结构图怎么做seo怎么做优化
  • 闸北做网站公司系统优化软件排行榜
  • 苏州网站建设开发昆山网站建设公司
  • 长沙住建信息中心网站樱桃电视剧西瓜视频在线观看
  • 做视频网站需要什么证书品牌推广活动策划案例
  • 织梦网站建设过程百度seo分析工具
  • 销售手机网站外贸seo
  • 网上开店怎么找货源东莞关键词优化平台
  • 滤芯网站怎么做深圳网络推广团队
  • 自己做网站必须要学哪些发布软文网站
  • 怎样建设自己的物流信息网站免费顶级域名申请网站
  • 网站式的公司记录怎么做产品推广外包
  • 网站连接数据库失败怎么办优化设计答案六年级上册语文
  • asp动态网站开发教程负责人揭阳seo推广公司
  • 学院网站建设的目的电工培训学校
  • 广东高端网站建设seo博客
  • 网站首页标题字数91永久海外地域网名
  • 做公众号app 网站 app最靠谱的十大教育机构
  • java做的文学网站设计网络营销方案
  • 网站运营公司哪家效果好免费网站模板
  • 网站建设费用核算萧山区seo关键词排名
  • 宿迁市区建设局网站建立网站一般要多少钱
  • 电子商务网站建设与网页设计最好用的免费建站
  • 公司做网站需要注意些什么电子商务seo是什么意思
  • 自制链接生成曹操论坛seo
  • 大型网站快速排名国际新闻今日头条