Skip to content

Commit c3b6d5e

Browse files
committed
no more set keys
1 parent 80b8970 commit c3b6d5e

2 files changed

Lines changed: 22 additions & 32 deletions

File tree

internal/server/redis/redis.go

Lines changed: 11 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ const (
2626
uidSequencePrefix = "uid_sequence/"
2727
memberToUidPrefix = "member_to_uid/"
2828
uidToMemberPrefix = "uid_to_member/"
29-
setPrefix = "set/"
3029
maxValBytes = 100_000 // 100k
3130
blobIndexSeparator = '\u21FB' // ⇻ used as a separator between the key and the chunk index
3231
blobSuffixStart = "0000001"
@@ -819,8 +818,7 @@ func (s *session) redisSetAdd(ctx context.Context, setKey string, members []stri
819818
start := time.Now()
820819
res, err := s.fdb.Transact(func(tx fdb.Transaction) (any, error) {
821820
// Get the Bitmap if it exists
822-
bitmapKey := setPrefix + setKey
823-
blob, err := s.readLargeObject(tx, bitmapKey)
821+
blob, err := s.readLargeObject(tx, setKey)
824822
if err != nil {
825823
return int64(0), fmt.Errorf("failed to read large object: %w", err)
826824
}
@@ -844,7 +842,7 @@ func (s *session) redisSetAdd(ctx context.Context, setKey string, members []stri
844842
if err != nil {
845843
return int64(0), fmt.Errorf("failed to marshal bitmap: %w", err)
846844
}
847-
bytesWritten, err := s.writeLargeObject(tx, bitmapKey, data)
845+
bytesWritten, err := s.writeLargeObject(tx, setKey, data)
848846
if err != nil {
849847
return int64(0), fmt.Errorf("failed to write large object: %w", err)
850848
}
@@ -916,8 +914,7 @@ func (s *session) redisSetRemove(ctx context.Context, setKey string, members []s
916914

917915
res, err := s.fdb.Transact(func(tx fdb.Transaction) (any, error) {
918916
// Get the Bitmap if it exists
919-
bitmapKey := setPrefix + setKey
920-
blob, err := s.readLargeObject(tx, bitmapKey)
917+
blob, err := s.readLargeObject(tx, setKey)
921918
if err != nil {
922919
return int64(0), fmt.Errorf("failed to read large object: %w", err)
923920
}
@@ -942,7 +939,7 @@ func (s *session) redisSetRemove(ctx context.Context, setKey string, members []s
942939

943940
// If the set is now empty, delete the large object
944941
if bitmap.IsEmpty() {
945-
if _, err := s.deleteLargeObject(tx, bitmapKey); err != nil {
942+
if _, err := s.deleteLargeObject(tx, setKey); err != nil {
946943
return int64(0), fmt.Errorf("failed to delete large object: %w", err)
947944
}
948945
return removed, nil
@@ -953,7 +950,7 @@ func (s *session) redisSetRemove(ctx context.Context, setKey string, members []s
953950
if err != nil {
954951
return int64(0), fmt.Errorf("failed to marshal bitmap: %w", err)
955952
}
956-
_, err = s.writeLargeObject(tx, bitmapKey, data)
953+
_, err = s.writeLargeObject(tx, setKey, data)
957954
if err != nil {
958955
return int64(0), fmt.Errorf("failed to write large object: %w", err)
959956
}
@@ -1010,8 +1007,7 @@ func (s *session) redisSetIsMember(ctx context.Context, setKey string, member st
10101007

10111008
res, err := s.fdb.ReadTransact(func(tx fdb.ReadTransaction) (any, error) {
10121009
// Get the Bitmap if it exists
1013-
bitmapKey := setPrefix + setKey
1014-
blob, err := s.readLargeObject(tx, bitmapKey)
1010+
blob, err := s.readLargeObject(tx, setKey)
10151011
if err != nil {
10161012
return nil, fmt.Errorf("failed to read large object: %w", err)
10171013
}
@@ -1066,8 +1062,7 @@ func (s *session) redisSetCard(ctx context.Context, setKey string) (int64, error
10661062

10671063
res, err := s.fdb.ReadTransact(func(tx fdb.ReadTransaction) (any, error) {
10681064
// Get the Bitmap's Meta Key if it exists
1069-
bitmapKey := setPrefix + setKey
1070-
blob, err := s.readLargeObject(tx, bitmapKey)
1065+
blob, err := s.readLargeObject(tx, setKey)
10711066
if err != nil {
10721067
return nil, fmt.Errorf("failed to read large object: %w", err)
10731068
}
@@ -1123,8 +1118,7 @@ func (s *session) redisSetMembers(ctx context.Context, setKey string) ([]string,
11231118

11241119
res, err := s.fdb.ReadTransact(func(tx fdb.ReadTransaction) (any, error) {
11251120
// Get the Bitmap if it exists
1126-
bitmapKey := setPrefix + setKey
1127-
blob, err := s.readLargeObject(tx, bitmapKey)
1121+
blob, err := s.readLargeObject(tx, setKey)
11281122
if err != nil {
11291123
return nil, fmt.Errorf("failed to read large object: %w", err)
11301124
}
@@ -1203,8 +1197,7 @@ func (s *session) redisSetInter(ctx context.Context, setKeys []string) ([]string
12031197
res, err := s.fdb.ReadTransact(func(tx fdb.ReadTransaction) (any, error) {
12041198
r := concurrent.New[string, []byte]()
12051199
blobs, err := r.Do(ctx, setKeys, func(setKey string) ([]byte, error) {
1206-
bitmapKey := setPrefix + setKey
1207-
blob, err := s.readLargeObject(tx, bitmapKey)
1200+
blob, err := s.readLargeObject(tx, setKey)
12081201
if err != nil {
12091202
return nil, fmt.Errorf("failed to read large object for set %q: %w", setKey, err)
12101203
}
@@ -1304,8 +1297,7 @@ func (s *session) redisSetUnion(ctx context.Context, setKeys []string) ([]string
13041297
res, err := s.fdb.ReadTransact(func(tx fdb.ReadTransaction) (any, error) {
13051298
r := concurrent.New[string, []byte]()
13061299
blobs, err := r.Do(ctx, setKeys, func(setKey string) ([]byte, error) {
1307-
bitmapKey := setPrefix + setKey
1308-
blob, err := s.readLargeObject(tx, bitmapKey)
1300+
blob, err := s.readLargeObject(tx, setKey)
13091301
if err != nil {
13101302
return nil, fmt.Errorf("failed to read large object for set %q: %w", setKey, err)
13111303
}
@@ -1405,8 +1397,7 @@ func (s *session) redisSetDiff(ctx context.Context, setKeys []string) ([]string,
14051397
res, err := s.fdb.ReadTransact(func(tx fdb.ReadTransaction) (any, error) {
14061398
r := concurrent.New[string, []byte]()
14071399
blobs, err := r.Do(ctx, setKeys, func(setKey string) ([]byte, error) {
1408-
bitmapKey := setPrefix + setKey
1409-
blob, err := s.readLargeObject(tx, bitmapKey)
1400+
blob, err := s.readLargeObject(tx, setKey)
14101401
if err != nil {
14111402
return nil, fmt.Errorf("failed to read large object for set %q: %w", setKey, err)
14121403
}

internal/server/redis/redis_test.go

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -531,17 +531,16 @@ func TestSets(t *testing.T) {
531531
})
532532
requireArraysEqual(t, []string{val1, val3, val4}, res)
533533

534-
// @TODO: fix set deletion
535-
// // delete the whole set and check that it's gone
536-
// res = sess.handleCommand(ctx, &resp.Command{
537-
// Name: "DEL",
538-
// Args: []resp.Value{resp.SimpleStringValue(set1)},
539-
// })
540-
// require.Equal(resp.FormatBoolAsInt(true), res)
534+
// delete the whole set and check that it's gone
535+
res = sess.handleCommand(ctx, &resp.Command{
536+
Name: "DEL",
537+
Args: []resp.Value{resp.SimpleStringValue(set1)},
538+
})
539+
require.Equal(resp.FormatBoolAsInt(true), res)
541540

542-
// res = sess.handleCommand(ctx, &resp.Command{
543-
// Name: "SMEMBERS",
544-
// Args: []resp.Value{resp.SimpleStringValue(set1)},
545-
// })
546-
// requireArraysEqual(t, []string{}, res)
541+
res = sess.handleCommand(ctx, &resp.Command{
542+
Name: "SMEMBERS",
543+
Args: []resp.Value{resp.SimpleStringValue(set1)},
544+
})
545+
requireArraysEqual(t, []string{}, res)
547546
}

0 commit comments

Comments
 (0)