redis - как создать транзакцию

После фиксации вашего ввода так, чтобы он был правильно разделен запятой:

jq -R 'split(";")
| map(gsub("^\"|\"$";""))
| {title:.[1],
   price: .[2],
   description: { plain_text: .[3] }}' input.csv

дает:

{
  "title": "Product Name",
  "price": "Price",
  "description": {
    "plain_text": "Description"
  }
}
{
  "title": "Example",
  "price": "200",
  "description": {
    "plain_text": "Descripcion here..."
  }
}
{
  "title": "Example2",
  "price": "300",
  "description": {
    "plain_text": "Some here..."
  }
}
0
задан dot 18 January 2019 в 18:26
поделиться

1 ответ

Транзакции Redis не имеют возможности «отката» - как только вы вызовете p.execute(), операции в нем будут выполнены. Вы можете отменить транзакцию в любое время до ее исполнения, позвонив по номеру p.discard().

Когда вы отменяете транзакцию, она не откатывается, потому что на самом деле никакие операции не выполнялись.

@application.route("/test/transactions/<int:trigger>")
def test_transactions(trigger):
    try:
        logging.info('test transactions triggered')
        r = redis.Redis(connection_pool=POOL)
        p = r.pipeline(transaction=True)
        p.hmset('multitest', {'thefield':'thevalue'})
        if trigger==1:  
            p.discard()
            return "discarded"
        else:
            p.hmset('multitest2', {'a':'b'})
            retval = p.execute()
            logging.info(retval)
            return "keys created"
    except Exception as e:
        logging.error(e)

Примечание: я не получаю ваш код полностью - вы можете проверить trigger перед чем-либо и пропустить попытку транзакции.

0
ответ дан Itamar Haber 18 January 2019 в 18:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: