2
0

db_redis.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package manager
  2. import (
  3. "context"
  4. "github.com/go-redis/redis/v8"
  5. )
  6. // implement kv interface backed by redis
  7. type redisAdapter struct {
  8. db *redis.Client
  9. }
  10. var ctx = context.Background()
  11. func (b *redisAdapter) InitBucket(bucket string) (err error) {
  12. // no-op
  13. return
  14. }
  15. func (b *redisAdapter) Get(bucket string, key string) (v []byte, err error) {
  16. var val string
  17. val, err = b.db.HGet(ctx, bucket, key).Result()
  18. if err == nil {
  19. v = []byte(val)
  20. }
  21. return
  22. }
  23. func (b *redisAdapter) GetAll(bucket string) (m map[string][]byte, err error) {
  24. var val map[string]string
  25. val, err = b.db.HGetAll(ctx, bucket).Result()
  26. if err == nil && val != nil {
  27. m = make(map[string][]byte)
  28. for k, v := range val {
  29. m[k] = []byte(v)
  30. }
  31. }
  32. return
  33. }
  34. func (b *redisAdapter) Put(bucket string, key string, value []byte) error {
  35. _, err := b.db.HSet(ctx, bucket, key, string(value)).Result()
  36. return err
  37. }
  38. func (b *redisAdapter) Delete(bucket string, key string) error {
  39. _, err := b.db.HDel(ctx, bucket, key).Result()
  40. return err
  41. }
  42. func (b *redisAdapter) Close() error {
  43. return b.db.Close()
  44. }