1
+ // EXAMPLE: pipe_trans_tutorial
2
+ // REMOVE_START
3
+ package io .redis .examples ;
4
+
5
+ import org .junit .Assert ;
6
+ import org .junit .Test ;
7
+ // REMOVE_END
8
+ import java .util .List ;
9
+
10
+ import redis .clients .jedis .UnifiedJedis ;
11
+ import redis .clients .jedis .AbstractPipeline ;
12
+ import redis .clients .jedis .AbstractTransaction ;
13
+ import redis .clients .jedis .Response ;
14
+
15
+ public class PipeTransExample {
16
+ @ Test
17
+ public void run () {
18
+ UnifiedJedis jedis = new UnifiedJedis ("redis://localhost:6379" );
19
+ // REMOVE_START
20
+ for (int i = 0 ; i < 5 ; i ++) {
21
+ jedis .del (String .format ("seat:%d" , i ));
22
+ }
23
+
24
+ jedis .del ("counter:1" , "counter:2" , "counter:3" , "shellpath" );
25
+ // REMOVE_END
26
+
27
+ // STEP_START basic_pipe
28
+ AbstractPipeline pipe = jedis .pipelined ();
29
+
30
+ for (int i = 0 ; i < 5 ; i ++) {
31
+ pipe .set (String .format ("seat:%d" , i ), String .format ("#%d" , i ));
32
+ }
33
+
34
+ pipe .sync ();
35
+
36
+ pipe = jedis .pipelined ();
37
+
38
+ Response <String > resp0 = pipe .get ("seat:0" );
39
+ Response <String > resp3 = pipe .get ("seat:3" );
40
+ Response <String > resp4 = pipe .get ("seat:4" );
41
+
42
+ pipe .sync ();
43
+
44
+ // Responses are available after the pipeline has executed.
45
+ System .out .println (resp0 .get ()); // >>> #0
46
+ System .out .println (resp3 .get ()); // >>> #3
47
+ System .out .println (resp4 .get ()); // >>> #4
48
+ // STEP_END
49
+ // REMOVE_START
50
+ Assert .assertEquals ("#0" , resp0 .get ());
51
+ Assert .assertEquals ("#3" , resp3 .get ());
52
+ Assert .assertEquals ("#4" , resp4 .get ());
53
+ // REMOVE_END
54
+
55
+ // STEP_START basic_trans
56
+ AbstractTransaction trans = jedis .multi ();
57
+
58
+ trans .incrBy ("counter:1" , 1 );
59
+ trans .incrBy ("counter:2" , 2 );
60
+ trans .incrBy ("counter:3" , 3 );
61
+
62
+ trans .exec ();
63
+
64
+ System .out .println (jedis .get ("counter:1" )); // >>> 1
65
+ System .out .println (jedis .get ("counter:2" )); // >>> 2
66
+ System .out .println (jedis .get ("counter:3" )); // >>> 3
67
+ // STEP_END
68
+ // REMOVE_START
69
+ Assert .assertEquals ("1" , jedis .get ("counter:1" ));
70
+ Assert .assertEquals ("2" , jedis .get ("counter:2" ));
71
+ Assert .assertEquals ("3" , jedis .get ("counter:3" ));
72
+ // REMOVE_END
73
+
74
+ // STEP_START trans_watch
75
+ // Set initial value of `shellpath`.
76
+ jedis .set ("shellpath" , "/usr/syscmds/" );
77
+
78
+ // Start the transaction and watch the key we are about to update.
79
+ trans = jedis .transaction (false ); // create a Transaction object without sending MULTI command
80
+ trans .watch ("shellpath" ); // send WATCH command(s)
81
+ trans .multi (); // send MULTI command
82
+
83
+ String currentPath = jedis .get ("shellpath" );
84
+ String newPath = currentPath + ":/usr/mycmds/" ;
85
+
86
+ // Commands added to the `trans` object
87
+ // will be buffered until `trans.exec()` is called.
88
+ Response <String > setResult = trans .set ("shellpath" , newPath );
89
+ List <Object > transResults = trans .exec ();
90
+
91
+ // The `exec()` call returns null if the transaction failed.
92
+ if (transResults != null ) {
93
+ // Responses are available if the transaction succeeded.
94
+ System .out .println (setResult .get ()); // >>> OK
95
+
96
+ // You can also get the results from the list returned by
97
+ // `trans.exec()`.
98
+ for (Object item : transResults ) {
99
+ System .out .println (item );
100
+ }
101
+ // >>> OK
102
+
103
+ System .out .println (jedis .get ("shellpath" ));
104
+ // >>> /usr/syscmds/:/usr/mycmds/
105
+ }
106
+ // STEP_END
107
+ // REMOVE_START
108
+ Assert .assertEquals ("/usr/syscmds/:/usr/mycmds/" , jedis .get ("shellpath" ));
109
+ Assert .assertEquals ("OK" , setResult .get ());
110
+ Assert .assertEquals (1 , transResults .size ());
111
+ Assert .assertEquals ("OK" , transResults .get (0 ).toString ());
112
+ // REMOVE_END
113
+
114
+ // HIDE_START
115
+ jedis .close ();
116
+ }
117
+ }
118
+ // HIDE_END
0 commit comments