func (c *RedisCache) getMutex(key string) *sync.RWMutex {
	var mux *sync.RWMutex
	nMux := new(sync.RWMutex)
	if oMux, ok := c.muxm.LoadOrStore(key, nMux); ok {
		mux = oMux.(*sync.RWMutex)
		nMux = nil
	} else {
		mux = nMux
	}
	return mux
}
store one mutex per key
TODO, mux should be released when no more accessed
package cache
import (
	"sync"
	"time"
	"github.com/gomodule/redigo/redis"
	rs "github.com/seaguest/common/redis"
)
type RedisCache struct {
	pool *redis.Pool
	muxm sync.Map
	mem *MemCache
}
func NewRedisCache(p *redis.Pool, m *MemCache) *RedisCache {
	return &RedisCache{
		pool: p,
		mem:  m,
	}
}