github.com/lingyao2333/mo-zero@v1.4.1/core/stores/redis/redistest/redistest.go (about)

     1  package redistest
     2  
     3  import (
     4  	"time"
     5  
     6  	"github.com/alicebob/miniredis/v2"
     7  	"github.com/lingyao2333/mo-zero/core/lang"
     8  	"github.com/lingyao2333/mo-zero/core/stores/redis"
     9  )
    10  
    11  // CreateRedis returns an in process redis.Redis.
    12  func CreateRedis() (r *redis.Redis, clean func(), err error) {
    13  	mr, err := miniredis.Run()
    14  	if err != nil {
    15  		return nil, nil, err
    16  	}
    17  
    18  	return redis.New(mr.Addr()), func() {
    19  		ch := make(chan lang.PlaceholderType)
    20  
    21  		go func() {
    22  			mr.Close()
    23  			close(ch)
    24  		}()
    25  
    26  		select {
    27  		case <-ch:
    28  		case <-time.After(time.Second):
    29  		}
    30  	}, nil
    31  }