Maison  >  Article  >  base de données  >  À propos des transactions et du pipeline Redis

À propos des transactions et du pipeline Redis

藏色散人
藏色散人avant
2020-11-05 16:04:032560parcourir

La colonne suivante du Tutoriel Redis vous présentera les transactions et le pipeline Redis. J'espère qu'elle sera utile aux amis dans le besoin !

À propos des transactions et du pipeline Redis

1. transaction reidis

La transaction Redis peut exécuter plusieurs commandes à la fois et comporte les trois importantes suivantes Garanties :

  • Les opérations par lots sont mises dans le cache de file d'attente avant l'envoi de la commande EXEC.
  • Entrez l'exécution de la transaction après avoir reçu la commande EXEC. Si une commande de la transaction ne parvient pas à s'exécuter, les commandes restantes sont toujours exécutées.
  • Pendant le processus d'exécution de la transaction, les demandes de commandes soumises par d'autres clients ne seront pas insérées dans la séquence de commandes d'exécution de la transaction.

Une transaction passera par les trois étapes suivantes du début à l'exécution :

  • Démarrer la transaction.
  • Commande pour rejoindre la file d'attente.
  • Exécutez la transaction.

MULTI démarre une transaction, puis met en file d'attente plusieurs commandes dans la transaction, et enfin la transaction est déclenchée par la commande EXEC , Exécutez toutes les commandes de la transaction ensemble :

1. Exécution de la transaction

À propos des transactions et du pipeline Redis

2. 🎜>Surveiller une (ou plusieurs) clés. Si cette (ou ces) clés sont modifiées par d'autres commandes avant l'exécution de la transaction, la transaction sera interrompue.

À propos des transactions et du pipeline RedisÀ propos des transactions et du pipeline Redis

3. jeter

Annuler la transaction et donner jusqu'à l'exécution de toutes les commandes dans le bloc de transaction.

À propos des transactions et du pipeline Redis

2. Code jedis

1. Transaction

template.setEnableTransactionSupport(true);
<br>

2. Code :

 redisTemplate.opsForValue().set("aaa", 321);
redisTemplate.watch("aaa");
redisTemplate.multi();
redisTemplate.opsForValue().set("aaa", 123);
redisTemplate.opsForValue().set("bbb", 123);
redisTemplate.exec();
<br>
3. 🎜>

code jedis :

Map<string> map = new HashMap();
map.put("aaa", 111);
map.put("bbb", 222);
map.put("ccc", 3333);

List list = redisTemplate.executePipelined(new RedisCallback<object>() {
    @Override
    public Object doInRedis(RedisConnection redisConnection) throws DataAccessException {
        redisConnection.openPipeline();        for (Map.Entry<string> mapEntry : map.entrySet()) {
            redisConnection.set(redisTemplate.getKeySerializer().serialize(mapEntry.getKey()), redisTemplate.getValueSerializer().serialize(mapEntry.getValue()));
        }        return null;
    }
}, redisTemplate.getValueSerializer());

System.out.println(redisUtil.get("aaa"));
System.out.println(redisUtil.get("bbb"));
System.out.println(redisUtil.get("ccc"));</string></object></string>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer