乐观锁
大多数是基于数据版本(version)的记录机制实现的。即为数据增加一个版本标识,在基于数据库表的版本解决方案中,一般是通过为数据库表增加一个”version”字段来实现读取出数据时,将此版本号一同读出,之后更新时,对此版本号加1。此时,将提交数据的版本号与数据库表对应记录的当前版本号进行比对,如果提交的数据版本号大于数据库当前版本号,则予以更新,否则认为是过期数据。
2024年09月17日
乐观锁
大多数是基于数据版本(version)的记录机制实现的。即为数据增加一个版本标识,在基于数据库表的版本解决方案中,一般是通过为数据库表增加一个”version”字段来实现读取出数据时,将此版本号一同读出,之后更新时,对此版本号加1。此时,将提交数据的版本号与数据库表对应记录的当前版本号进行比对,如果提交的数据版本号大于数据库当前版本号,则予以更新,否则认为是过期数据。
2024年09月17日
Docker 容器的部署有一种在手机上装 App 的感觉,但 Docker 容器并不会像手机 App 那样会自动更新,而如果我们需要更新容器一般需要以下四个步骤:
2024年09月17日
2月20日17时许,阿里云安全监测到一起大规模挖矿事件,判断为Watchdogs蠕虫导致,并在第一时间进行了应急处置。
该蠕虫短时间内即造成大量Linux主机沦陷,一方面是利用Redis未授权访问和弱密码这两种常见的配置问题进行传播,另一方面从known_hosts文件读取ip列表,用于登录信任该主机的其他主机。这两种传播手段都不是第一次用于蠕虫,但结合在一起爆发出巨大的威力。
2024年09月17日
Redis集群搭建的目的其实也就是集群搭建的目的,所有的集群主要都是为了解决一个问题,横向扩展。使用proxy就可以实现。
源码:https://github.com/twitter/twemproxy
1. 首先,选一台安装了zookeeper的机器。
2. 这里不讲解如何安装zookeeper。将twemproxy-master解压到目录/data下。
2024年09月17日
引言
Redis中的事务(transaction)是一组命令的集合。事务同命令一样都是Redis最小的执行单位,一个事务中的命令要么都执行,要么都不执行。Redis事务的实现需要用到 MULTI 和 EXEC
2024年09月17日
redis的watch multi exec 方法实现秒杀抢购。优点:使用了乐观锁没有锁的等待,比队列方式减少了大量的内存消耗。 watch 监视一个或多个key,如果在事务执行之前这个(或这些)key被其他命令所改动,那么事务将被打断。
2024年09月17日
严格意义来讲,redis的事务和我们理解的传统数据库(如mysql)的事务是不一样的。
redis中的事务定义
Redis中的事务(transaction)是一组命令的集合。
事务同命令一样都是Redis的最小执行单位,一个事务中的命令要么都执行,要么都不执行。 事务的原理是先将属于一个事务的命令发送给Redis,然后再让Redis依次执行这些命令。
2024年09月17日
一般的 事务简单来说就是 一系列的操作保证原子性,成功都成功~失败都失败。
但是!但是!但是! redis 的事务在执行中出错时,错的将会被忽略,队列之后的指令依然可以执行。一旦出现这种情况 需要手动回滚。
redis 的事务仅仅保证了所有的操作都会严格的 按照原子操作来执行,不保证所有的都是成功的,这需要开发者自己来约束。
2024年09月17日
WATCH命令用于在Redis交易处理中提供一种乐观锁。WATCH命令可以监控key中存储值的变化情况。当值产生变化时,EXEC命令会执行失败。使用UNWATCH命令可以释放对key的监控。当EXEC命令执行时,所有的监听都会被释放。