Skip to content

Commit ae5a6b4

Browse files
DOC-5791 Rust sync strings examples
1 parent 18c7fc9 commit ae5a6b4

File tree

1 file changed

+153
-0
lines changed

1 file changed

+153
-0
lines changed
Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
// EXAMPLE: set_tutorial
2+
#[cfg(test)]
3+
mod strings_tests {
4+
// STEP_START import
5+
use redis::{Commands, ExistenceCheck};
6+
// STEP_END
7+
8+
#[test]
9+
fn run() {
10+
let mut r = match redis::Client::open("redis://127.0.0.1") {
11+
Ok(client) => {
12+
match client.get_connection() {
13+
Ok(conn) => conn,
14+
Err(e) => {
15+
println!("Failed to connect to Redis: {e}");
16+
return;
17+
}
18+
}
19+
},
20+
Err(e) => {
21+
println!("Failed to create Redis client: {e}");
22+
return;
23+
}
24+
};
25+
26+
// STEP_START set_get
27+
if let Ok(res) = r.set("bike:1", "Deimos") {
28+
let res: String = res;
29+
println!("{res}"); // >>> OK
30+
// REMOVE_START
31+
assert_eq!(res, "OK");
32+
// REMOVE_END
33+
} else {
34+
println!("Error setting foo");
35+
}
36+
37+
match r.get("bike:1") {
38+
Ok(res) => {
39+
let res: String = res;
40+
println!("{res}"); // >>> Deimos
41+
// REMOVE_START
42+
assert_eq!(res, "Deimos");
43+
// REMOVE_END
44+
},
45+
Err(e) => {
46+
println!("Error getting foo: {e}");
47+
return;
48+
}
49+
};
50+
// STEP_END
51+
52+
// STEP_START setnx_xx
53+
if let Ok(res) = r.set_options("bike:1", "bike", redis::SetOptions::default().conditional_set(ExistenceCheck::NX)) {
54+
let res: bool = res;
55+
println!("{res}"); // >>> false
56+
// REMOVE_START
57+
assert!(!res);
58+
// REMOVE_END
59+
} else {
60+
println!("Error setting foo");
61+
}
62+
63+
match r.get("bike:1") {
64+
Ok(res) => {
65+
let res: String = res;
66+
println!("{res}"); // >>> Deimos
67+
// REMOVE_START
68+
assert_eq!(res, "Deimos");
69+
// REMOVE_END
70+
},
71+
Err(e) => {
72+
println!("Error getting foo: {e}");
73+
return;
74+
}
75+
};
76+
77+
if let Ok(res) = r.set_options("bike:1", "bike", redis::SetOptions::default().conditional_set(ExistenceCheck::XX)) {
78+
let res: String = res;
79+
println!("{res}"); // >>> OK
80+
// REMOVE_START
81+
assert_eq!(res, "OK");
82+
// REMOVE_END
83+
}
84+
85+
match r.get("bike:1") {
86+
Ok(res) => {
87+
let res: String = res;
88+
println!("{res}"); // >>> bike
89+
// REMOVE_START
90+
assert_eq!(res, "bike");
91+
// REMOVE_END
92+
},
93+
Err(e) => {
94+
println!("Error getting foo: {e}");
95+
return;
96+
}
97+
};
98+
// STEP_END
99+
100+
// STEP_START mset
101+
if let Ok(res) = r.mset(&[("bike:1", "Deimos"), ("bike:2", "Ares"), ("bike:3", "Vanth")]) {
102+
let res: String = res;
103+
println!("{res}"); // >>> OK
104+
// REMOVE_START
105+
assert_eq!(res, "OK");
106+
// REMOVE_END
107+
}
108+
109+
match r.mget(&["bike:1", "bike:2", "bike:3"]) {
110+
Ok(res) => {
111+
let res: Vec<String> = res;
112+
println!("{res:?}"); // >>> ["Deimos", "Ares", "Vanth"]
113+
// REMOVE_START
114+
assert_eq!(res.len(), 3);
115+
assert_eq!(res[0], "Deimos");
116+
assert_eq!(res[1], "Ares");
117+
assert_eq!(res[2], "Vanth");
118+
// REMOVE_END
119+
},
120+
Err(e) => {
121+
println!("Error getting foo: {e}");
122+
return;
123+
}
124+
};
125+
// STEP_END
126+
127+
// STEP_START incr
128+
if let Ok(res) = r.set("total_crashes", 0) {
129+
let res: String = res;
130+
println!("{res}"); // >>> OK
131+
// REMOVE_START
132+
assert_eq!(res, "OK");
133+
// REMOVE_END
134+
}
135+
136+
if let Ok(res) = r.incr("total_crashes", 1) {
137+
let res: i32 = res;
138+
println!("{res}"); // >>> 1
139+
// REMOVE_START
140+
assert_eq!(res, 1);
141+
// REMOVE_END
142+
}
143+
144+
if let Ok(res) = r.incr("total_crashes", 10) {
145+
let res: i32 = res;
146+
println!("{res}"); // >>> 11
147+
// REMOVE_START
148+
assert_eq!(res, 11);
149+
// REMOVE_END
150+
}
151+
// STEP_END
152+
}
153+
}

0 commit comments

Comments
 (0)