locker.go 606 B

1234567891011121314151617181920212223242526272829
  1. package runtime
  2. import (
  3. "IotAdmin/core/storage"
  4. "github.com/bsm/redislock"
  5. )
  6. type Locker struct {
  7. prefix string
  8. locker storage.AdapterLocker
  9. }
  10. // NewLocker 创建对应上下文分布式锁
  11. func NewLocker(prefix string, locker storage.AdapterLocker) storage.AdapterLocker {
  12. return &Locker{
  13. prefix: prefix,
  14. locker: locker,
  15. }
  16. }
  17. func (e *Locker) String() string {
  18. return e.locker.String()
  19. }
  20. // Lock 返回分布式锁对象
  21. func (e *Locker) Lock(key string, ttl int64, options *redislock.Options) (*redislock.Lock, error) {
  22. return e.locker.Lock(e.prefix+intervalTenant+key, ttl, options)
  23. }