conditionalDeleteExample demonstrates using DelExArgs with digest
(ctx context.Context, rdb *redis.Client)
| 157 | |
| 158 | // conditionalDeleteExample demonstrates using DelExArgs with digest |
| 159 | func 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 |
| 200 | func clientSideDigestExample(ctx context.Context, rdb *redis.Client) { |