test_transaction.py
# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import unicode_literals
import redis
import time
from multiprocessing import Process
r = redis.StrictRedis(host='localhost', port=6379, db=0)
key = "abc"
def do(name, value):
with r.pipeline() as pipe:
try:
pipe.watch(key)
pipe.multi()
pipe.set(key, value)
time.sleep(1)
pipe.execute()
print "{} Success!!!".format(name)
except redis.exceptions.WatchError:
print "{} WatchError!!!".format(name)
p1 = Process(target=do, args=("p1", 1))
p1.start()
p2 = Process(target=do, args=("p2", 2))
p2.start()
time.sleep(3) #Warten Sie, bis der Vorgang abgeschlossen ist
print r.get(key)
Ausführungsergebnis: % python test_redis.py p2 WatchError!!! p1 Success!!! 1
Es fühlt sich an, als könnten Sie den Fehler abbrechen. Es ist nicht so gut zu benutzen wie RDBS, also habe ich das Gefühl, dass ich es ein wenig tun kann.
Recommended Posts