code: func (db *DB) ZRemRangeByLex(key []byte, min []byte, max []byte, rangeType uint8) (int64, error) {
  	if min == nil {
  		min = db.zEncodeStartSetKey(key)
  	} else {
  		min = db.zEncodeSetKey(key, min)
  	}
  	if max == nil {
  		max = db.zEncodeStopSetKey(key)
  	} else {
  		max = db.zEncodeSetKey(key, max)
  	}
  
  	t := db.zsetBatch
  	t.Lock()
  	defer t.Unlock()
  
  	it := db.bucket.RangeIterator(min, max, rangeType)
  	defer it.Close()
  
  	var n int64
  	for ; it.Valid(); it.Next() {
  		t.Delete(it.RawKey())
  		n++
  	}
  
  	if err := t.Commit(); err != nil {
  		return 0, err
  	}
  
  	return n, nil
  }
docs: // ZRemRangeByLex remvoes members in [min, max] lexicographically