下面由redis教程栏目给大家介绍关于redis事务和pipleline,希望对需要的朋友有所帮助!
Redis 事务可以一次执行多个命令, 并且带有以下三个重要的保证:批量操作在发送 EXEC 命令前被放入队列缓存。收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。一个事务从开始到执行会经历以下三个阶段:开始事务。命令入队。执行事务。 MULTI 开始一个事务, 然后将多个命令入队到事务中, 最后由 EXEC 命令触发事务, 一并执行事务中的所有命令:1、事务执行2、watch监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。 3、discard取消事务,放弃执行事务块内的所有命令。
1、配置支持事务
template.setEnableTransactionSupport(true);登录后复制<br/>登录后复制2、代码:
redisTemplate.opsForValue().set("aaa", 321); redisTemplate.watch("aaa"); redisTemplate.multi(); redisTemplate.opsForValue().set("aaa", 123); redisTemplate.opsForValue().set("bbb", 123); redisTemplate.exec();登录后复制
jedis 代码:
Map<String, Object> 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, Object> 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的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号