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

网站开发平台及常用的开发工具人工智能培训

网站开发平台及常用的开发工具,人工智能培训,网站建设 有限公司,企业宣传片拍摄制作配置环境 下载 Redis Windows 访问 https://github.com/microsoftarchive/redis/releases 选择版本进行下载 - 勾选 [配置到环境变量] - 无脑下一步并安装 命令行执行:redis-cli -v 查看已安装的 Redis 版本,能成功查看就表示安装成功啦~ Mac brew i…

配置环境

下载 Redis

Windows

访问 https://github.com/microsoftarchive/redis/releases 选择版本进行下载 - 勾选 [配置到环境变量] - 无脑下一步并安装

在这里插入图片描述

命令行执行:redis-cli -v 查看已安装的 Redis 版本,能成功查看就表示安装成功啦~


Mac

brew install redis # 安装 redis
brew services start redis # 启动 redis
brew services stop redis # 停止 redis
brew services restart redis # 重启 redis

启动 Redis

打开任务管理器,找到 Redis 服务,点击启动即可

在这里插入图片描述



配置 EggJS 项目

  1. 安装依赖
pnpm i egg-redis

  1. 配置插件
// config/plugin.js
exports.redis = {enable: true,package: 'egg-redis',
};
// config/config.default.js
exports.redis = {client: {port: 6379, // Redis porthost: '127.0.0.1', // Redis hostpassword: '',db: 0,},
};

  1. 扩展 helper
// app/extend/helper.js
module.exports = {// 生成 redis 锁的控制器; val 为随机数, 防止解锁时误删其他请求的锁redisLockController(key, val = Math.random(), ttl = 5 * 60) {const app = this.app;return {// 上锁async lock() {// 使用 set 命令上锁并设置过期时间, 保证原子性const lockResult = await app.redis.set(key,val,'EX',ttl,'NX');return lockResult === 'OK';},// 解锁async unlock() {// 使用 lua 脚本校验锁并解锁, 保证原子性const script = `if redis.call('get', KEYS[1]) == ARGV[1] thenreturn redis.call('del', KEYS[1])elsereturn 0end`;// 使用 eval 命令执行 lua 脚本const unlockResult = await app.redis.eval(script, 1, key, val);return unlockResult === 1;},};},
};

  1. 使用 redis 上锁
// app/controller/home.js
const { Controller } = require('egg');module.exports = class HomeController extends Controller {async index() {const { id } = this.ctx.query;const result = await this.service.home.index(id);this.ctx.body = result;}
};
// app/service/home.js
const { Service } = require('egg');module.exports = class HomeService extends Service {async index(id = 0) {// 从 header 中获取 region 参数const region = this.ctx.get('region') || 'default';// 生成锁的 keyconst lockKey = `lock:${region}:${id}`;// 获取锁的控制器const { lock, unlock } = this.ctx.helper.redisLockController(lockKey);// 上锁const lockResult = await lock();// 上锁失败if (!lockResult) return { code: 500, msg: 'lock failed' };// 上锁成功, 执行业务逻辑let result;try {result = await this.mockSql(id);} catch (err) {result = { code: 500, msg: err.message };}// 解锁await unlock();// 返回结果return result;}// 模拟数据库查询async mockSql(id) {// 2s 后返回结果return new Promise((resolve) => {setTimeout(() => {resolve({code: 200,msg: 'success',data: { id, desc: 'egg is very good', time: Date.now() },});}, 2000);});}
};



模拟抢锁

开两个浏览器访问 http://localhost:7001 即可模拟抢锁的场景


http://www.yidumall.com/news/108775.html

相关文章:

  • 免费网站建设专业服务平台百度指数官网首页
  • 西安网站制作sxyun网站域名查询系统
  • 外贸营销型网站建设平台seo优化裤子关键词
  • 合肥做网站公司哪家好新闻摘抄大全
  • wordpress搬到谷歌服务器对网站的建议和优化
  • 桂林网站制作公司全国疫情最新报告
  • 网站如何链接备案系统百度营销客户端
  • 网站受到攻击西安seo建站
  • 心理咨询 网站模版seo分析报告
  • 企业网站的意义深圳网络推广软件
  • 关于做网站策划书网络营销环境分析包括哪些内容
  • 购物类网站开发sem广告投放是做什么的
  • 做旅游销售网站平台ppt模板技能培训有哪些
  • b2b网站有哪些方面微信投放广告多少钱
  • 阿里云网站怎么做seo整站优化新站快速排名
  • 做网站建设有哪些公司好兰州网站优化
  • js跳转网站网站制作的服务怎么样
  • 个人做网站好吗优化营商环境评价
  • 网站建设公司赚钱吗百度一下就一个
  • 门户网站建设的意义百度关键词推广网站
  • 做国外电影网站如何发布自己的网站
  • 合同模板网站免费个人网页制作
  • 小说网站做封面要钱吗网推平台有哪些
  • 武汉 开发 公司 网站建设百度开户流程
  • 建立网站数据库免费制作网站
  • 安徽搜索引擎推广公司搜索引擎优化排名案例
  • 苹果销售网站怎么做自动推广软件免费
  • 做类似电驴网站app营销模式有哪些
  • 深圳网站设计兴田德润官方网站搜索关键词排名优化技术
  • wordpress显示备案号进一步优化营商环境