热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Redis事务和pipleline是什么

小编给大家分享一下Redis事务和pipleline是什么,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!1、reidis事务Redis事务可以一

小编给大家分享一下Redis事务和pipleline是什么,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!

1、reidis事务

Redis 事务可以一次执行多个命令, 并且带有以下三个重要的保证:

  • 批量操作在发送 EXEC 命令前被放入队列缓存。
  • 收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。
  • 在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。

一个事务从开始到执行会经历以下三个阶段:

  • 开始事务。
  • 命令入队。
  • 执行事务。

MULTI 开始一个事务, 然后将多个命令入队到事务中, 最后由 EXEC 命令触发事务, 一并执行事务中的所有命令:

1、事务执行

Redis事务和pipleline是什么

2、watch

监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。

Redis事务和pipleline是什么Redis事务和pipleline是什么

3、discard

取消事务,放弃执行事务块内的所有命令。

Redis事务和pipleline是什么

2、jedis代码

1、配置支持事务

template.setEnableTransactionSupport(true);

2、代码:


 redisTemplate.opsForValue().set("aaa", 321);
redisTemplate.watch("aaa");
redisTemplate.multi();
redisTemplate.opsForValue().set("aaa", 123);
redisTemplate.opsForValue().set("bbb", 123);
redisTemplate.exec();

3、pipleline

jedis 代码:


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

List list = redisTemplate.executePipelined(new RedisCallback() {
    @Override
    public Object doInRedis(RedisConnection redisConnection) throws DataAccessException {
        redisConnection.openPipeline();        for (Map.Entry 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"));

看完了这篇文章,相信你对Redis事务和pipleline是什么有了一定的了解,想了解更多相关知识,欢迎关注编程笔记行业资讯频道,感谢各位的阅读!


推荐阅读
author-avatar
缘zhi韵_297
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有