MCPcopy
hub / github.com/redis/go-redis / conditionalDeleteExample

Function conditionalDeleteExample

example/digest-optimistic-locking/main.go:159–197  ·  view source on GitHub ↗

conditionalDeleteExample demonstrates using DelExArgs with digest

(ctx context.Context, rdb *redis.Client)

Source from the content-addressed store, hash-verified

157
158// conditionalDeleteExample demonstrates using DelExArgs with digest
159func conditionalDeleteExample(ctx context.Context, rdb *redis.Client) {
160 key := "session:abc123"
161 value := "user_data_here"
162
163 // Set a value
164 rdb.Set(ctx, key, value, 0)
165 fmt.Printf("Created session: %s\n", key)
166
167 // Calculate expected digest
168 expectedDigest := helper.DigestString(value)
169 fmt.Printf("Expected digest: 0x%016x\n", expectedDigest)
170
171 // Try to delete with wrong digest (should fail)
172 wrongDigest := uint64(99999)
173 deleted := rdb.DelExArgs(ctx, key, redis.DelExArgs{
174 Mode: "IFDEQ",
175 MatchDigest: wrongDigest,
176 }).Val()
177
178 if deleted == 0 {
179 fmt.Println("✓ Correctly refused to delete (wrong digest)")
180 }
181
182 // Delete with correct digest (should succeed)
183 deleted = rdb.DelExArgs(ctx, key, redis.DelExArgs{
184 Mode: "IFDEQ",
185 MatchDigest: expectedDigest,
186 }).Val()
187
188 if deleted == 1 {
189 fmt.Println("✓ Successfully deleted with correct digest")
190 }
191
192 // Verify deletion
193 exists := rdb.Exists(ctx, key).Val()
194 if exists == 0 {
195 fmt.Println("✓ Session deleted")
196 }
197}
198
199// clientSideDigestExample demonstrates calculating digests without fetching from Redis
200func clientSideDigestExample(ctx context.Context, rdb *redis.Client) {

Callers 1

mainFunction · 0.85

Calls 6

DigestStringFunction · 0.92
SetMethod · 0.65
PrintfMethod · 0.65
DelExArgsMethod · 0.65
ExistsMethod · 0.65
ValMethod · 0.45

Tested by

no test coverage detected