华为云云耀云服务器L实例评测|使用redis事务和lua脚本
文章目录
- 云服务器的类型
- 云服务优点
- redis
- 一,关系型数据库(sqlserver,mysql,oracle)的事务隔离机制说明:
- redis事务机制
- lua
- lua脚本好处:
- 一,怎么在redis中使用lua脚本
- 二,脚本内容比较多,我们可以创建一个脚本文件。把脚本内容写入文件中。
- 三,脚本文件上传到redis中,然后仍然在交换模式中执行这个脚本。
云服务器的类型
云服务器类型分为三种:公有云服务器,私有云服务器,专用云服务器
公有云服务器:公有云服务器具有成本效益、弹性扩展、可靠性、高可用性、管理简便、安全性、全球化服务和技术支持等优势,适用于各种规模和类型的企业和个人需求。
私有云服务器:私有云服务器是一种用于构建和管理私有云环境的服务器。它可以提供类似于公有云的弹性计算、存储和网络资源,但是这些资源完全掌控在用户自己的控制下。私有云服务器可以部署在用户自己的数据中心。使用私有云服务器可以满足一些特定需求,例如企业有对数据安全性和隐私性的特别要求,对公有云环境不太适应。
专用云服务器:专用云服务器提供了许多优势,包括更高的性能和可扩展性、更高的安全性和隐私性,以及更大的灵活性和控制权。客户可以根据自己的需求自定义和管理专用云服务器,包括操作系统、应用程序和网络配置等。
云服务优点
- 成本效益:云服务允许企业根据需求动态地增加或减少计算资源,避免过度投资设备和维护费用,降低运营成本。
- 易于管理和维护:云服务提供商通常具有强大的技术团队和经验,可以为企业提供技术支持和维护服务,减轻企业管理和维护负担。
- 灵活性和可扩展性:在云计算环境中,资源是按需分配的,企业可以根据需要随时添加或删除计算资源,以适应业务增长或下降的需要。
- 安全性:云服务提供商通常具有专门的安全措施来保护用户的数据和隐私,例如备份、加密、网络隔离等,同时由于云计算服务集中在一个地方,采取统一的安全措施能够更有效地保护企业的数据安全。
- 全球化服务:云服务提供商在全球范围内建立了多个数据中心,可以提供全球化的服务,满足用户在不同地域的业务需求,实现全球范围内的数据传输和访问。
- 技术支持:云服务提供商通常提供全天候的技术支持和服务,用户可以随时获得专业的帮助和解决方案,提高了用户使用公有云服务器的便利性和可靠性。
redis
一,关系型数据库(sqlserver,mysql,oracle)的事务隔离机制说明:
下面是设置mysql数据库事务隔离机制的sql语句
set global transaction isolation level read uncommitted;
下面是事务隔离的几个机制:
- read uncommitted(读取未提交的数据)
缺点:如果数据最终rollback了,那么读取的数据就错误了 - read committed(读取已提交的数据)
缺点:如果在一个事务中,对通过一个数据进行了多次的读取。在多次读取的过程中,有人提交数据。那么多次读取的数据结果就会出现不一致 - repeatable read(重复读)
缺点:会出现幻读 - serializable(串行)
缺点:太慢
redis事务机制
- MULTI与EXEC命令
以MULTI开始一个事务,然后将多个命令入队到事务中,最后由EXEC命令触发事务,一并执行事务中的所有命令 - DISCARD命令
DISCARD命令用于取消一个事务,她清空客户端的整个事务队列,然后将客户端从事务状态调整回非事务状态,最后返回字符串OK给客户端,说明事务已被取消。
乐观锁:一个版本控制 update table set age=13 where v=1
悲观锁:
- WATCH(类似乐观锁)
WATCH命令用于在事务开始之前监视任意数量的键:当调用EXEC命令执行事务时,如果任意一个被监视的键已经被其他用户端修改了,那么整个事务不再执行,直接返回失败。
例子一:这个例子中没有出现异常,所以所有的命令都成功了。
例子二:这个例子中,在事务开启后,有一个命令执行出错了,那么所有的命令都不会执行
例子三:这个例子中出现了两个事务,两个事务都表示自己执行成功了,但是有一个发现值并不是自己设置的,被别人覆盖了。
例子四:加上Wathch age后,再来执行事务。
左边的在开启事务之后,exec执行之前,右边有另外一个事务对age进行改进。那么左边的事务将执行失败
lua
lua脚本好处:
- 减少网络开销。可以将多个请求通过脚本的形式一次发送,减少网络时延。
- 原子操作。redis会将整个脚本作为一个整体执行,中间不会被其他命令插入。因此在编写脚本过程中无需担心会出现竟态条件,无需使用事务。
- 复用。客户端发送的脚本会永久存在redis中,这样,其他客户端可以复用这一变量类型,声明变量。控制语句,循环语句。函数
一,怎么在redis中使用lua脚本
命令格式:
EVAL script numkeys key [key…] arg [arg…]
说明:
- script 是第一个参数,为lua5.1脚本。该脚本不需要定义Lua函数(也不应该)
- 第二个参数numkeys指定后续参数有几个key
- key [key…],是要操作的键,可以指定多个,在lua脚本中通过KEYS[1],KEYS[2]获取
- arg [age…],参数,在lua脚本中通过ARGV[1],ARGV[2]获取。
使用eval命令 简单示例:
eval "return ARGV[1]" 0 100
eval "return {ARGV[2],ARGV[1]}" 0 100 200
eval "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first second
上面是使用EVAL命令执行lua脚本的简单示例,没有和redis结合起来。
下面我们使用redis.call来执行redis的命令。
说明:…是字符串连接符。local是声明一个局部变量
eval 'local val = ARGV[1].." "..redis.call("get",KEYS[1]) return val' 1 age niuniu
二,脚本内容比较多,我们可以创建一个脚本文件。把脚本内容写入文件中。
注意:
- 这里执行脚本文件,不是在交互模式下执行的。
先创建一个脚本文件,在/home目录下
# touch test01.lua
通过vi命令,把脚本内容写进去
执行找个脚本,注意,前后的空格
# ./redis-cli -a 123456 --eval /usr/local/src/redis6/lua/test01.lua age , xiaolin
三,脚本文件上传到redis中,然后仍然在交换模式中执行这个脚本。
上传脚本,返回一个hash值,f52a1be1e0dc6ce2813d1890a39dc993cab5527b
在交换模式中,使用EVALSHA命令执行脚本
EVALSHA f52a1be1e0dc6ce2813d1890a39dc993cab5527b 1 age xiaozh
相关文章:

华为云云耀云服务器L实例评测|使用redis事务和lua脚本
文章目录 云服务器的类型云服务优点redis一,关系型数据库(sqlserver,mysql,oracle)的事务隔离机制说明:redis事务机制 lualua脚本好处:一,怎么在redis中使用lua脚本二,脚…...

vue2项目中使用element ui组件库的table,制作表格,改表格的背景颜色为透明的
el-table背景颜色变成透明_el-table背景透明_讲礼貌的博客-CSDN博客 之前是白色的,现在变透明了,背景颜色是蓝色...

C#报错 功能“结构字段初始化表达式“在C#7.3中不可用。请使用10.0或更高的语言版本。
解决方式: 打开以下文件 增加 <LangVersion>10.0</LangVersion>...

servlet基础知识
目录 什么是servlet概念/定义作用 servlet容器概念/是什么作用如何配置和管理 servlet生命周期有哪些生命周期每个周期中可以执行哪些操作 创建和编写servlet如何创建一个简单的servletservlet类的结构是什么样的如何处理HTTP请求和响应 servlet映射和URL模式什么是servlet映射…...

使用poi-tl循环导出word报表
先看模板和导出的效果 模板 效果 根据模板循环生成表格,每个表格再循环填充数据,也就是两层循环,第一层循环是学生学期信息,第二层循环是学生的成绩数据。 第一个循环 {{?listTable}} {{/}}第二个循环 {{reportList}} 表格…...

PyCharm搭建Scrapy环境
Scrapy入门 1、Scrapy概述2、PyCharm搭建Scrapy环境3、Scrapy使用四部曲4、Scrapy入门案例4.1、明确目标4.2、制作爬虫4.3、存储数据4.4、运行爬虫 1、Scrapy概述 Scrapy是一个由Python语言开发的适用爬取网站数据、提取结构性数据的Web应用程序框架。主要用于数据挖掘、信息处…...

TensorFlow的transformer类模型文件转换为pytorch
在进行transformer类模型的训练或开发时,我们会在GitHub、huggingface等平台上下载已有的模型文件。个人习惯用pytorch框架进行代码编写,然而很多时候在下载模型文件时,会遇到TensorFlow的模型,这是就涉及到转换的问题。 首先说一…...

C++学习之指针和数组
指针和一维数组 一个数组包含若干元素,每个数组元素都在内存中占用存储单元,它们都有相应的地址。指针变量既可以指向变量,当然也可以指向数组元素。所谓数组元素的指针就是数组元素的地址。 eg: int a[6]; //定义一个整数数组a…...

什么是站内搜索引擎?如何在网站中加入站内搜索功能?
在当今数字时代,用户体验对于网站的成功起着至关重要的作用。提升用户体验和改善整体网站性能的一种方法是引入站内搜索引擎。站内搜索引擎是一种强大的工具,它的功能类似于Google或Bing等流行搜索引擎,但它专注于实施自己网站上的内容。用户…...

【C++】面向对象编程(六)在派生类中定义一个虚函数、虚函数的静态解析
在派生类中定义一个虚函数 定义派生类时: 将基类中的虚函数覆盖掉:派生类提供新定义,所声明的函数原型必须完全符合基类所声明的函数原型(包括:参数列表、返回类型、常量性);原封不动继承基类…...

uniapp vue3 静态图片引入
方法一 从新定义路径 一定看好你图片的路径 代码 <template><div class"main">Main<img :src"getImg()" alt""></div> </template><!-- 方式一 // <script setup> // let imgName logo.png // cons…...

仅用61行代码,你也能从零训练大模型
本文并非基于微调训练模型,而是从头开始训练出一个全新的大语言模型的硬核教程。看完本篇,你将了解训练出一个大模型的环境准备、数据准备,生成分词,模型训练、测试模型等环节分别需要做什么。AI 小白友好~文中代码可以直接实操运…...

Vue3目录结构与Yarn.lock 的版本锁定
Vue目录结构与Yarn.lock 的版本锁定 一、Vue3.0目录结构图总览 举个例子看vue的目录,一开始不知道该目录是什么意思目录里各个文件包里安放有什么,程序员在哪里操作该如何操作。 下图目录看Vue新项目 VS Code 打开文件包后出现一列目录 二、目录结构 1…...

内网渗透之哈希传递
文章目录 哈希传递(NTLM哈希)概念LMNTLM 原理利用hash传递获取域控RDP 总结 哈希传递(NTLM哈希) 内网渗透中找到域控IP后使用什么攻击手法拿下域控: 扫描域控开放端口。因为域控会开放远程连接:windows开…...

Haar cascade+opencv检测算法
Harr特征识别人脸 Haar cascade opencv步骤 读取包含人脸的图片使用haar模型识别人脸将识别的结果用矩形框画出来 构造haar检测器 :cv2.CascadeClassifier(具体检测模型文件) # 构造Haar检测器 # 级联分级机,cv2.CascadeClassifier():cv2的内置方法࿰…...

跨域请求方案整理实践
项目场景: 调用接口进行手机验证提示,项目需要调用其它域名的接口,导致前端提示跨域问题 问题描述 前端调用其他域名接口时报错提示: index.html#/StatisticalAnalysisOfVacancy:1 Access to XMLHttpRequest at http://xxxxx/CustomerService/template/examineMes…...

Git Pull failure 【add/commit】
操作页面 操作步骤 1. 打开项目所在 在.git目录下右击打开Git Bssh Here 2. git add . 3. git commit -m "提交" 4. 成功提交到本地, 这下就可以拉取代码了...

单链表习题(对应章节chapter2)
题目1:链表的中间结点 题目来源:leetcode链表的中间结点 第一种思路分析:考虑指针移动到相应的位置来做 参考代码:位置(/chapter2/c/middle-link-list-node/lc1.cc) #include <stdio.h> extern &qu…...

SQL创建新表
表的创建、修改与删除: 1.1 直接创建表:CREATE TABLE [IF NOT EXISTS] tb_name – 不存在才创建,存在就跳过 (column_name1 data_type1 – 列名和类型必选 [ PRIMARY KEY – 可选的约束,主键 | FOREIGN KEY – 外键,引…...

Python视频剪辑-Moviepy视频尺寸和颜色调整技巧
在视频编辑中,尺寸和颜色是两个不能忽视的重要因素。本文将从专业角度深入探讨如何通过MoviePy进行视频尺寸和颜色的调整,以及遮罩透明度的应用。 文章目录 视频尺寸变换函数裁剪视频指定区域裁剪视频像素为偶数视频增加边框缩小、放大视频视频颜色变换函数blackwhite 视频变…...

前端笔记:Create React App 初始化项目的几个关键文件解读
1 介绍 Create React App 是一个官方支持的方式,用于创建单页应用的 React 设置用于构建用户界面的 JAVASCRIPT 库主要用于构建 UI 2 项目结构 一个典型的 Create React App 项目结构如下: ├── package.json ├── public # 这…...

提高工作效率!本地部署Stackedit Markdown编辑器,并实现远程访问
文章目录 1. docker部署Stackedit2. 本地访问3. Linux 安装cpolar4. 配置Stackedit公网访问地址5. 公网远程访问Stackedit6. 固定Stackedit公网地址 StackEdit是一个受欢迎的Markdown编辑器,在GitHub上拥有20.7k Star!,它支持将Markdown笔记保…...

visual studio解决bug封装dll库
1.速度最大化 O2 2.设置输出目录 配置属性/常规/输出目录 链接器/常规/输出dll文件 链接器/调试/输出程序数据库pdb文件 链接器/高级/导入库 3.输出X86 X64分别对应的dll、lib、pdb 然后修改更新说明 更新说明格式如下: 4.将库提交到FTP每日更新库文档下 和测试交接…...

合肥工业大学自然语言处理实验报告
工程报告 目录 1 研究背景 4 2 工程目标 7 2.1 工程一 7 2.2 工程二 7 2.3 工程三 7 2.4 工程四 7 3 实验环境与工具 7 4 模型方法 8 4.1 n-gram模型 8 4.2 模型的平滑 9 4.2.1 Add-one 9 4.2.2 Add-k 9 4.2.3 Backoff 10 4.2.4 Interpolation 10 4.2.5 Absolute discounting 1…...

layui laydate实现日期选择并禁用指定的时间
最终实现禁用2023-9-26这天的效果 官网地址 日期和时间组件文档 - layui.laydate 下面是实现的代码 <!DOCTYPE html> <html> <head><meta charset"utf-8"><title>layDate快速使用</title><link rel"stylesheet"…...

scala数组函数合集
目录 1. 添加类函数 2.生成类函数 3.删除类函数 4.查找类函数 5.统计类函数 6.修改类函数 7.判断类函数 8.获取集合元素 9.集合操作类函数 10.转换类函数 11.工具类函数 12.集合内与集合间计算函数 在 scala 中Array数组是一种可变的、可索引的数据集合 创建数组…...

软件测试「转行」答疑(未完更新中)
软件测试行业「转行」答疑(未完更新中) ⭐文章简介一、2023年「互联网」行业现状!二、0基础转行「互联网」的5句大实话建议!三、互联网有哪些「职业」,可以选择?四、这些职业之间的优缺点介绍。 ⭐文章简介…...

计算机网络---TCP/UDP
TCP/UDP 1、TCP三次握手 四次挥手? TCP是一种面向连接的、可靠的字节流服务。在建立TCP连接时,需要进行三次握手,而在关闭TCP连接时,需要进行四次挥手。具体来说,TCP三次握手的过程如下: 客户端向服务端发送SYN报文,表示请求建立连接。服务端收到SYN报文后,向客户端发…...

Docker私有仓库打开2375端口(linux)
前言 在我们开发测试过程中,需要频繁的更新docker镜像,然而默认情况下,docker的2375端口是关闭的,下面介绍如何打开端口。 1、打开步骤 1.1、修改配置 登录docker所在服务器,修改docker.service文件 vi /usr/lib/sys…...

底部Taber的抽取
1.会抽取一个布局样式 2.布局样式里面抽取一个底部样式 这个是layout的代码 <template><view class"layout-wrapper"><view class"layout-content"><slot></slot></view><!-- 底部 --><Tabbar :activeInde…...