Redis 原子操作

最近开发中遇到一个问题:需要对Hash中的字段进行修改,修改结果为,将valueB拼接到valueA上,需要两步操作:

  1. 取出Hash中的valueA

  2.将valueB拼接到valueA后面,重新加入Hash,覆盖valueA

虽然redis是单进程单线程,但是写入点增多时,例如多线程,多机器写入时,就会使得脏数据出现。

由此需要本章介绍的redis事务

MULTI

标记一个事务块的开始。

事务块内的多条命令会按照先后顺序被放进一个队列当中,最后由 EXEC 命令原子性(atomic)地执行。

可用版本:

>= 1.2.0

时间复杂度:

O(1)。

返回值:

总是返回 OK 。

redis> MULTI            # 标记事务开始

OK

redis> INCR user_id     # 多条命令按顺序入队

QUEUED

redis> INCR user_id

QUEUED

redis> INCR user_id

QUEUED

redis> PING

QUEUED

redis> EXEC             # 执行

1) (integer) 1

2) (integer) 2

3) (integer) 3

4) PONG

猜你喜欢

转载自www.cnblogs.com/wuwangchuxin0924/p/11119742.html