Redis-监控Watch(面试常问!)

前言

提示:本文章是日常学习内容的总结,并非全部原创;仅供大家参考借鉴,并无其他商业用途。Bilibili搜索关注:狂神说
真正在公司中的实践:NoSQL + RDBMS 一起使用才是最强的,阿里巴巴的架构演进!
技术没有高低之分,就看你如何去使用!(提升内功,思维的提高!)
云计算的长征之路:阿里云的这群疯子

概括

悲观锁:

很悲观,认为什么时候都会出问题,无论做什么都会加锁!

乐观锁:

很乐观,认为什么时候都不会出问题,所以不会上锁!
更新数据的时候去判断一下,在此期间是否有人修改过这个数据,
获取version,更新的时候比较 version

1、Redis测监视测试

1.1、正常执行成功

127.0.0.1:6379> set money 100 
OK
127.0.0.1:6379> set out 0 
OK
127.0.0.1:6379> watch money         # 监视 money 对象 
OK
127.0.0.1:6379> multi               # 事务正常结束,数据期间没有发生变动,这个时候就正常执行成功! 
OK
127.0.0.1:6379> DECRBY money 20 
QUEUED 
127.0.0.1:6379> INCRBY out 20
QUEUED 
127.0.0.1:6379> exec 
1) (integer) 80 
2) (integer) 20

1.2、测试多线程修改值 ,事务执行失败 返回(nil)

打开另一个redis-cli客户端,在其exec提交事务之前;修改money对象的值
使用watch 可以当做redis的乐观锁操作!
很乐观,不上锁! 只在更新数据的时候去判断一下,在此期间是否有人修改过这个数据,

127.0.0.1:6379> watch money           # 监视 money 
OK
127.0.0.1:6379> multi 
OK
127.0.0.1:6379> DECRBY money 10 
QUEUED 
127.0.0.1:6379> INCRBY out 10 
QUEUED 
127.0.0.1:6379> exec                  # 执行之前,另外一个线程,修改了我们的值,这个时候,就会导致事务执行失 败!
(nil)

1.2.1、如果事务修改失败,怎么办?

先解锁money对象,再重新监视money对象的最新值,最后exec重新提交事务

在这里插入图片描述

### 如何在ArcGIS中快速构建金字塔并优化性能 在ArcGIS环境中,构建金字塔是一项重要的操作,它能够显著提升栅格数据的显示和处理效率。然而,在实际应用过程中,由于栅格数据集大小的不同以及硬件资源的差异,可能会遇到构建时间较长的情况。以下是关于如何优化ArcGIS中的金字塔构建过程的具体方法: #### 1. 使用合适的压缩方式 选择适合的压缩算法可以有效减少金字塔文件的存储空间占用,并提高写入速度。常用的压缩选项包括LZ77、JPEG等。对于图像质量要求较高的情况可以选择JPEG压缩[^1]。 #### 2. 调整采样比率 合理调整金字塔等级之间的采样比例也是加速构建的一个重要因素。默认情况下,ArcGIS采用的是每级缩小两倍的比例关系(即1/2)。如果允许一定程度上的精度损失,则可尝试更大的降比值,比如1/4甚至更高,这样可以在牺牲少量细节的基础上大幅缩短计算周期。 #### 3. 利用多核处理器优势 现代计算机通常配备有多核心CPU,充分利用这一特性可以通过启用并行处理机制来加快整个流程的速度。具体来说就是在执行`Build Pyramids`命令前确认已开启相应的高级参数设置——勾选“Use Multithreading”,从而让软件自动检测可用线程数并分配任务给它们共同完成工作负载。 #### 4. 提高磁盘I/O效能 鉴于创建期间会产生大量读取写入动作,因此确保目标驱动器具有良好的传输速率至关重要。推荐使用SSD而非传统HDD作为存放原始影像及其衍生品的位置;另外还需注意关闭不必要的后台程序以免争夺系统资源而导致延迟现象发生。 ```python import arcpy # 设置环境变量 arcpy.env.workspace = r"C:\path\to\raster_dataset" # 执行构建金字塔操作 arcpy.BuildPyramids_management(in_rasters="your_raster", resample_technique="NEAREST", compression_type="JPEG", quality_level=85, skip_first=True, pyramid_ext="PYRAMID", multithreaded_processing="USE_MULTITHREADING") ``` 以上脚本展示了利用Python调用ArcPy模块来进行批量自动化管理多个栅格数据集时指定各项属性的方法,其中特别强调了启用多线程支持(`multithreaded_processing`)的重要性[^1]。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值